2012-11-22 23 views
-5

可能重复:
Matching on repeated substrings in a regex如何检测正在重演相同的字母

我想看看我输入匹配abc,但它实际上是abbbbbc。尽管存在多个b s,我仍然希望它匹配。

这些应该符合:

abc 
abbc 
abbbbbbbbbbbbbc 

这些不应该匹配:

ab 
bc 
b 
aabc 
abcc 
ac 
+0

两种情况都有重复的字母!? –

+2

为什么'drr'和'uuuuuuuuurr'不会触发?在第一个样本中,重复“r”,在第二个样本中重复“u”和“r”。 –

+0

如果你正在寻找重复的u,为什么会“durr”触发? – BunjiquoBianco

回答

4

你看着repetition quantifiers

^ab+c$ 

匹配一个a,一个或多个b S和一个c^$将其固定到字符串的开始和结尾,以确保前面没有其他a s,最后没有其他 s。

如果你想在一个较长的字符串找到这些,使用单词边界,而不是(他们匹配字处理和非单词字符之间的任何位置):

\\bab+c\\b 

因此,这将发现abbbbc in Foo abbbbc.bar。但它在fooabbbbcbar找不到它。如果你仍然想找到它,你将不得不离开了任何位置的断言:

ab+c 

但随后,aaaabccccc也将匹配。

+0

我会尽力,谢谢。 – TheVarmari

+0

好的,有一个问题;我会如何匹配[任何]同性恋/好朋友/ gaay等[任何事]?我正在使用这个系统,警告用户说“坏”的话等。我用Java,顺便说一句。 – TheVarmari

+0

@TheVarmari您可以使用单词“\\ b'而不是'^'和'$'(即'\\ bba + r \\ b')。它们匹配,在词的结尾处。所以你可以在'这个baaaar.'中找到'baaar'。但是你不会在'thisbaroverhere'里找到'bar'。如果你仍然**想在这些情况下找到'bar',只需使用'bar'。但是'bbbbbarrrrr'也会匹配(而'尴尬'可能被标记为发誓的单词;))。 –