Tôi muốn có một mô hình regex để tìm thấy bất kỳ số nguyên trong chuỗi, nhưng không nổi (với dấu thập phân là hay "" Vì vậy, cho chuỗi "":.regex: tìm số nguyên nhưng không nổi
abc111.222dfg333hfg44 0,55
nó chỉ nên tìm:
tôi tạo ra mô hình regex:
(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)
nhưng nó không thành công khi sử dụng trong regex C++ STL. Nó ném ngoại lệ:
Unhandled exception at at 0x76AF4598 in xxxxxx.exe: Microsoft C++ exception: std::regex_error at memory location 0x00C1F218.
nhưng nó hoạt động thoải mái tại lớp C# Regex
UPDATE:
Mã của tôi:
smatch intMatch;
regex e1("(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)");
string s("111.222dfg333hfg44.55");
regex_search (s, intMatch, e1);
nhưng nó ném ngoại lệ trên dòng:
regex e1("(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)");
CẬP NHẬT 2:
Cả hai câu trả lời đều đúng, nhưng đối với C++ STL regex Toto một hoạt động tốt hơn.
Vấn đề gần như chắc chắn nằm trong mã của bạn, nhưng bạn chưa hiển thị bất kỳ mã nào, vì vậy không thể trả lời được. –
Cú pháp biểu thức chính quy .NET khác với các biểu thức chính quy STL. – Dai
Thành thật mà nói, đối với một vấn đề giống như những gì bạn mô tả, một trình phân tích cú pháp máy nhà nước "nhân vật ăn" đơn giản sẽ nhanh hơn để viết và dễ hiểu hơn, và cũng nhanh hơn trong thực thi. – Dai