Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想在 C++ 程序中编写一个正则表达式来检查字符串是否与以下表达式匹配:
一个不包含 '_' 但它可以包含数字后跟的单词
'_' 其次是
连续三个数字(即 047)
后跟“_”,然后是
一个字符串(可以包含任何内容)
我尝试了以下表达式,但它似乎确实找到了如上所述的所需字符串。我怀疑问题出在第一部分,但我无法检测到它以便正确修改:
static const wregex stringForm("([^_]?)_?(\\d{3})_(.+)");
那么正确的 reg 表达式是什么?
\b[^_]*?(_\d{3}.+?)?\b
一个词(\b是词的边界,量词是非贪婪的)。零个或多个不是 _ ( [^_]*?) 的字符。可选 ( (...)?),您描述的数字序列 ( _\d{3}) 后跟一个或多个任意字符 ( .+?)。
\b
[^_]*?
(...)?
_\d{3}
.+?
你有没有试过这个:
static const wregex stringForm("([a-zA-Z0-9]*_[0-9]{3}.*)");