【发布时间】:2015-05-22 17:13:57
【问题描述】:
我正在寻找一个正则表达式,它只会给我包含我指定的字母的单词,并且匹配单词的长度应该与指定的字符数相同。
因此,如果我给字母 OMHE 它应该只匹配包含这些字母的单词,并且只匹配包含这些字母的单词,以及该字母在字母序列中出现的次数
到目前为止,这个具体示例的正则表达式是(否则我会动态构建正则表达式)...
.*?[O{1}M{1}H{1}E{1}]{4}
它在某种程度上确实有效,但我确实得到了一些不应该匹配的单词。
该示例应该匹配的单词是HOME,但MEMO 和HOMEE 不应该匹配。在正则表达式方面我真的很糟糕:(
【问题讨论】:
-
查找词:'包含这些字符中的任何一个'或'包含所有这些字符'?
-
{1}在字符类中失去其特殊含义,因此您的正则表达式等同于.*?[OHME}{1]{4}。 -
@Yousef's 它应该包含所有这些字符
-
以后Java实现条件的时候可以用这个
\b(?:(?>((?(1)(?!))H)|((?(2)(?!))M)|((?(3)(?!))O)|((?(4)(?!))E))){4}\b -
由于 Java 不执行条件语句,如果您尝试在字符串中查找 所有 个单词,那么唯一的方法就是进行排列。