2010-02-17 20 views
5

我想我的邏輯變得很虛弱。正則表達式不匹配「www」

我需要編寫一個正則表達式,它匹配除www以外的所有內容。它應該匹配wwwd,abcd和其他所有內容,只需而不是www。 (哦,上帝,請不要太容易)。

我正在使用Ruby語言的正則表達式的實現。

更新:我需要使用正則表達式,而不僅僅是text != 'www',因爲它是API的設計方式。它預計模式作爲參數,而不是結果

回答

10

爲什麼是正則表達式?足夠不是text != "www"

這仍然是(使用look-ahead):^(?!www$).*

+0

這場比賽空字符串。 – 2010-02-17 11:51:28

+0

@Dejw:Thx,固定 – soulmerge 2010-02-17 11:54:48

4

這是一個普通的正則表達式。你可以用某些方言中的否定斷言來做更有趣的事情。

^(.|..|[^w]..|.[^w].|..[^w]|.....*)$ 

英文:

你想要的東西,這正是一個字符,正好兩個字符,恰好三個字符,其中這3箇中的至少一個不是W,或長度超過3個字符。

+0

+1好方法。在最後一組中只有一個多餘的時期。 – soulmerge 2010-02-17 11:35:57

+1

@Gumbo:爲什麼? '。[^ w] .'匹配'哇'。 – soulmerge 2010-02-17 11:40:00

+0

@soulmerge:最後一段時間不是多餘的(假設你說它不應該是五段)。這是四個時期(...)加上零或更多的附加字符(。*),總共五個時期。它也可以被指定爲「.... +」。 – 2010-02-17 11:59:23

1

與Laurence Gonsalves(*)相同的想法,但在我看來可以這麼說^.$|^..$|^....+$|.*[^w].*也就是說,在開始和結束之間有1或2或3個以上的字符,或者包含非w的任何數字。

(*)我的意思是這是對他的回答的評論,但是不小心把它當作我自己的回答。我想我會把它留在這裏。

+0

哦,很好的簡化。 +1 – 2010-12-04 06:46:54

0

非「www」的字符串,而不是整個單詞只是另一種方法

^.{0,2}([^w].*|.{4,})?$