2010-07-21 26 views
4

如何編寫一個正則表達式,它將匹配以I開頭的所有單詞,但單詞Integer除外?如何匹配以「I」開頭但不是「Integer」一詞的單詞?

實施例:

t1: Integer; 
    t2: Interface; 
    t3: IXml; 

結果應該是InterfaceIXml

+0

它應該匹配單個「我」還是不匹配? – MikeD 2010-07-21 14:53:23

+0

無論如何,這裏有很多微不足道的問題,而且這個問題有點棘手,因爲你必須向前看,然後「重新消費」你看到的同樣的信件。 – mquander 2010-07-21 14:54:21

+0

@ back2dos - 除了粗魯和擊敗本網站的目的之外,所發佈的一個答案清楚地表明,儘管並不困難,但解決方案與您聲稱的一樣微不足道。 – adamk 2010-07-21 14:54:35

回答

4

這應該這樣做:

I(?!nteger\b)\w+ 
+1

...雖然佩德羅,不幸的是,並沒有指定他有哪種正則表達式。並非所有的正則表達式庫都支持負向預測。 – 2010-07-21 14:56:16

+0

您應該刪除\ w,因爲它與de semicolumn不匹配;在例子中給出。 – Toto 2010-07-21 14:56:55

+0

@ M42:分號無意匹配。 – SilentGhost 2010-07-21 15:02:47

1

如果您不能使用作爲SilentGhost建議先行斷言,您可以使用基本的正則表達式表達了同樣的語法:

I(\b|[A-Za-mo-z][A-Za-z]*|n(\b|[A-Za-su-z][A-Za-z]*|t(\b|[A-Za-df-z][A-Za-z]*|e(\b|[A-Za-fh-z][A-Za-z]*|g(\b|[A-Za-df-z][A-Za-z]*|e(\b|[A-Za-qs-z][A-Za-z]*|r[A-Za-z]+)))))) 
相關問題