Tuc*_*ker 4 regex pattern-matching
我想要一个正则表达式来匹配一个字符串,只要它包含一个预定义次数的字符.
例如:我想匹配包含字符"_"3次的所有字符串;
因此"a_b_c_d"将通过
"a_b"将失败
"a_b_c_d_e"将失败
有人知道一个能满足这个要求的简单正则表达式吗?
谢谢
举个例子,你可以这样做:
\b[a-z]*(_[a-z]*){3}[a-z]*\b
Run Code Online (Sandbox Code Playgroud)
(带有忽略大小写标志).
你可以在这里玩
它表示"匹配0个或更多字母,然后是'_ [az]*'正好三次,然后是0或更多字母".的\b意思是"单词边界",即"相匹配整个单词".
由于我使用了'*',如果单词中只有三个"_",无论它出现在单词的开头还是结尾,这都会匹配 - 否则你可以修改它.
另外,我假设你想要匹配一个字符串中的所有单词,其中只有三个"_".
这意味着字符串"a_b a_b_c_d"会说"a_b_c_d"通过(但"a_b"失败).
如果你的意思是整个字符串全局,你只想要三个"_"出现,那么使用:
^[^_]*(_[^_]*){3}[^_]*$
Run Code Online (Sandbox Code Playgroud)
这将正则表达式锚定在字符串的开头并结束,确保其中只有三个"_"出现.