2014-05-05 104 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

不幸的是,我的任務不適用。但任何方式。 –