正则表达式错过了某些字母

时间:2013-05-14 14:04:41

标签: php regex

是否有一种简单的方法可以忽略/遗漏某些字母。问题是找到一个长5个字母但不包含字母b,j,m或n的单词。

我可以简单地指定我想要的字母,例如[a] [c-i] [k-l] [o-2]吗?这似乎不是很干净,我仍然需要指定单词需要5个字母长。所以我想我需要一个/ w和一个{5},但我不知道如何将它们全部组合起来。 感谢。

5 个答案:

答案 0 :(得分:10)

这将选择除bjmn之外的所有字符:

[^bjmn]{5}

如果您只想要小写字母,那么您列出的除外:

[c-ik-lo-za]{5}

如果您不想要5个字母单词作为较长单词的一部分,请添加单词边界检查:

\b[c-ik-lo-za]{5}\b

答案 1 :(得分:0)

而不是[a][c-i][k-l][o-2],请尝试[ac-ik-lo-z]{5},它应检测五个允许字母的字符串。

编辑:哎呀,你特意想要单词。只测试两边的单词边界,然后:\b[ac-ik-lo-z]{5}\b - 检查空格会让你错过一个匹配,如果它是一行的最后一个并且后面有一个句点,后面有一个逗号,在括号中等等

答案 2 :(得分:0)

如果您也不想要大写的,请使用[^ bjmn]或[^ BbJjMmNn]。

答案 3 :(得分:0)

尝试\W[ac-ik-lo-z]{5}\W(这会匹配一组五个字符两边的空格,这些字符不包含您要查找的字符。

您可以将多个范围组合到一个列表中,如上所述。

答案 4 :(得分:0)

这需要一个单词有5个字母但不包含任何bjmn。这可以通过使用像[ac-i]这样的字母跨度来简化,但在尝试阅读时往往会有点混乱。

\b([acdefghiklopqrstuvwxyz]{5})\b

enter image description here

enter image description here