0

我想在 C++ 程序中编写一个正则表达式来检查字符串是否与以下表达式匹配:

一个不包含 '_' 但它可以包含数字后跟的单词

'_' 其次是

连续三个数字(即 047)

后跟“_”,然后是

一个字符串(可以包含任何内容)

我尝试了以下表达式,但它似乎确实找到了如上所述的所需字符串。我怀疑问题出在第一部分,但我无法检测到它以便正确修改:

static const wregex stringForm("([^_]?)_?(\\d{3})_(.+)");  

那么正确的 reg 表达式是什么?

4

2 回答 2

2
\b[^_]*?(_\d{3}.+?)?\b

一个词(\b是词的边界,量词是非贪婪的)。零个或多个不是 _ ( [^_]*?) 的字符。可选 ( (...)?),您描述的数字序列 ( _\d{3}) 后跟一个或多个任意字符 ( .+?)。

于 2012-07-24T12:41:10.850 回答
0

你有没有试过这个:

static const wregex stringForm("([a-zA-Z0-9]*_[0-9]{3}.*)"); 
于 2012-07-24T12:39:19.677 回答