2014-01-08 55 views
0

我當時正在解決java正則表達式問題,但是根據我發現的一些示例,我發現對於像下面這樣的組正在困惑。所以,可能有人解釋關於其被賦予的正則表達式,在java中捕獲組正則表達式

(?<!\d) and (?!\d) 

我明白了:

\d for digit 
? for one or zero 
! for not 

會是什麼有關上述羣體是什麼意思?請幫忙!

在此先感謝。

+0

夥計,這不是這個網站是如何使用的。 ** [這個網站](http://www.regular-expressions.info/)上有一個非常好的教程**,其中很多都只是谷歌。 –

回答

5

表達式(?<!\d)(?!\d)是「負面後視」和「負面展望」。它們是否定的,零寬度斷言,而不是捕獲組。

表達式(?<!\d)斷言先前的字符是而不是的數字。
表達式(?!\d)斷言下一個字符是而不是的數字。

雖然他們看起來像類似的組,這就是使用括號的語法。

順便提及,它們可以表示爲正面看變通(?<=^|\D)(?=\D|$)

+0

'(?!\ d)'表示這個位置後面沒有數字 - 下一個字符是非數字或者*是*沒有下一個字符。 '(?= \ D)'表示有*是*下一個字符,並且是非數字。它們不相同。這就是爲什麼我們應該把指導骨骼基本問題的海報引導到教程中。我知道*你*瞭解如何lookarounds真正的工作,但正確描述新手是不容易的。 –

+0

@AlanMoore好點 - 我試圖成爲一個聰明的褲子與「等值」積極。我現在通過添加備用開始/結束來修復它們。可能應該把它們遺漏出去:/ – Bohemian

+0

非常感謝你。我知道了。 – puru