使用正则表达式匹配字符串

时间:2012-07-24 12:34:00

标签: c++ regex

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

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

'_'后跟

连续三位数(即047)

后跟'_'后跟

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

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

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

那么适当的reg表达是什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

你试过这个:

static const wregex stringForm("([a-zA-Z0-9]*_[0-9]{3}.*)");