正则表达式:查找整数但不是浮点数

use*_*544 6 c# c++ regex stl

我想要一个正则表达式模式来查找字符串中的任何整数,但不是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一个更好.

Tot*_*oto 3

我不确定 C++ STL,但许多正则表达式风格不支持可变长度负向后查找。

对于您的情况,您可以简单地执行以下操作:

(?:^|[^.,\d])(\d+)(?:[^.,\d]|$)
Run Code Online (Sandbox Code Playgroud)