2014-05-05 58 views
1

我有一个指定的问题。我有,例如:Hello little, hello red, sometime and nowMySQL REGEXP和重复单词

我需要正则表达式,只有当子句同时包含hellored时,才会匹配什么。

我已经完成一个正则表达式((hello|red).*){2}()*什么工作只有在第一个字hello一个字red,但在我的第两个字helloregexp将无字red工作,我需要什么错:(

正则表达式是什么将匹配只有当事业包含字hello和字red,而不是依赖赘述之一。

请帮助。

THX。

+0

你的正则表达式的作品,因为'hello'确实发现了两次,你并不需要'red'特别是有,但无论是'hello'或'red'。 – PhistucK

回答

4

通常,这个任务可以使用positive lookahead assertions,但MySQL的正则表达式引擎不支持它们。

因此,你唯一的选择(如果你想这样做在一个单一的正则表达式)是处理这两种变化(hellored后或hellored之前),“手动”:

hello.*red|red.*hello 

对于两个“搜索单词“,这可能是可以接受的 - 但它并不能很好地进行缩放。

你的正则表达式((hello|red).*){2}()*有点奇怪;这意味着

(   # Start of group: 
(hello|red) # Match either hello or red 
.*   # Match any number of characters 
){2}   # Match this group twice 
()*   # Match the empty string any number of times... 

所以这个匹配hello foo hellored bar red或为好。

+0

我想用什么:))显然没有超过。多谢。 –

+0

Thx for RegExpBuffy上的链接 - 伟大的程序! –

2

我不知道这是否会解决你的问题,但这里是我的解决方案:

.*(hello.*red|red.*hello).* 

这里是它与它是如何真正起作用的复杂的解释的在线演示: http://regex101.com/r/eL3wA0

+0

Thx。我会试试:) –

0

它可能取决于你想要做什么,但我相信正则表达式是任务的矫枉过正。

怎么样简单:

WHERE col LIKE "%red%" 
    AND col LIKE "%hello%" 
+0

不幸的是,我的任务不适用。但任何方式。 –