我想要一个正则表达式模式来查找字符串中的任何整数,但不是float(小数点为"."或",".所以对于字符串:
abc111.222dfg333hfg44.55
它应该只找到:
333
我创建了正则表达式模式:
(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)
Run Code Online (Sandbox Code Playgroud)
但在C++ STL正则表达式中使用时失败了.它抛出异常:
Unhandled exception at at 0x76AF4598 in xxxxxx.exe: Microsoft C++ exception: std::regex_error at memory location 0x00C1F218.
Run Code Online (Sandbox Code Playgroud)
但它在C#Regex类中运行良好
更新:
我的代码:
smatch intMatch;
regex e1("(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)");
string s("111.222dfg333hfg44.55");
regex_search ( s, intMatch, e1 );
Run Code Online (Sandbox Code Playgroud)
但它会引发异常:
regex e1("(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)");
Run Code Online (Sandbox Code Playgroud)
更新2:
两个答案都是正确的,但对于C++ STL正则表达式Toto一个更好.
我不确定 C++ STL,但许多正则表达式风格不支持可变长度负向后查找。
对于您的情况,您可以简单地执行以下操作:
(?:^|[^.,\d])(\d+)(?:[^.,\d]|$)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |