Tôi đang chơi với Boost.Regex để phân tích chuỗi cho các từ và số. Đây là những gì tôi có cho đến thời điểm này:Bạn có thể sử dụng Boost.Regex để phân tích cú pháp luồng không?
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/regex.hpp>
#include <boost/range.hpp>
using namespace std;
using namespace boost;
int main()
{
regex re
(
"("
"([a-z]+)|"
"(-?[0-9]+(\\.[0-9]+)?)"
")"
);
string s = "here is a\t list of Words. and some 1239.32 numbers to 3323 parse.";
sregex_iterator m1(s.begin(), s.end(), re), m2;
BOOST_FOREACH (const match_results<string::const_iterator>& what, make_iterator_range(m1, m2)) {
cout << ":" << what[1].str() << ":" << what.position(1) << ":" << what.length(1) << endl;
}
return 0;
}
Có cách nào để yêu cầu regex phân tích cú pháp từ luồng thay vì chuỗi không? Có vẻ như có thể sử dụng bất kỳ trình lặp nào.
Bạn có thể nối các chuỗi chỉ bằng "" a "" b "' không có '+'? Wow Tôi chưa bao giờ thấy điều đó ... đó có phải là tiêu chuẩn không? –
Có, đó luôn là tiêu chuẩn trong C và C++. Bạn có thể nối chuỗi hằng số như thế này, nhưng không phải chuỗi C++ std ::. – Ferruccio