如果字符串恰好包含字符的N个字符,则匹配正则表达式

Tuc*_*ker 4 regex pattern-matching

我想要一个正则表达式来匹配一个字符串,只要它包含一个预定义次数的字符.

例如:我想匹配包含字符"_"3次的所有字符串;

因此"a_b_c_d"将通过
"a_b"将失败
"a_b_c_d_e"将失败

有人知道一个能满足这个要求的简单正则表达式吗?

谢谢

mat*_*fee 5

举个例子,你可以这样做:

\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)

这将正则表达式锚定在字符串的开头并结束,确保其中只有三个"_"出现.