我想在C ++程序中编写正则表达式,检查字符串是否与以下表达式匹配:
一个不包含'_'的单词,但它可以包含数字后跟
'_'后跟
连续三位数(即047)
后跟'_'后跟
一个字符串(可以包含任何内容)
我尝试过以下表达式,但它确实找到了如上所述的所需字符串。我怀疑问题出在第一部分,但我无法检测到它以便正确修改:
static const wregex stringForm("([^_]?)_?(\\d{3})_(.+)");
那么适当的reg表达是什么?
答案 0 :(得分:2)
\b[^_]*?(_\d{3}.+?)?\b
一个单词(\b
是单词边界,量词是非贪婪的)。
零个或多个不是_([^_]*?
)的字符。
(可选)(...)?
),您描述的数字序列(_\d{3}
)后跟一个或多个任何字符(.+?
)。
答案 1 :(得分:0)
你试过这个:
static const wregex stringForm("([a-zA-Z0-9]*_[0-9]{3}.*)");