5

有没有一种简单的方法可以忽略/错过某些字母。问题是找到一个长度为 5 个字母但不包含字母 b、j、m 或 n 的单词。

我可以只指定我想要的字母,例如 [a][ci][kl][o-2]?这看起来不是很干净,我仍然需要指定单词需要 5 个字母长。所以我想我需要一个 /w 和一个 {5} 但不知道如何将它们结合起来。谢谢。

4

5 回答 5

10

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

[^bjmn]{5}

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

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

如果您不希望包含较长单词的 5 个字母单词,请添加单词边界检查:

\b[c-ik-lo-za]{5}\b
于 2013-05-14T14:08:24.073 回答
0

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

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

在此处输入图像描述

在此处输入图像描述

于 2013-05-14T14:38:19.100 回答
0

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

于 2013-05-14T14:10:35.723 回答
0

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

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

于 2013-05-14T14:10:04.710 回答
0

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

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

于 2013-05-14T14:14:27.347 回答