2013-06-20 75 views
1

鑑於此正則表達式:爪哇正則表達式possesive量詞

x[^x]*+x 

和該輸入字符串匹配:

xbbbx 

結果是匹配的文本xbbbx開始於索引0和索引5

結束

但是,通過只更改最後一個字母xZ在正則表達式和字符串,我們得到這個正則表達式:

x[^x]*+Z 

這種輸入字符串:

xbbbZ 

,其結果是:沒有找到匹配

爲什麼單個字母的變化會產生這種行爲變化?

回答

3

你之所以使用「所有格」量詞來儘可能匹配符號。

所以在這種情況下,xbbbZ正則表達式x[^x]*+匹配所有非x字符,直到行結束,它停止。它已經消耗了輸入xbbbZ內的「Z」。

此正則表達式,x[^x]*+x,工程用xbbbx因爲「佔有慾」量詞停止當它達到一個x。你的輸入最後有一個x,因此佔有量詞停止。這允許正則表達式x的最後部分與x匹配。

在Java tutorial page的末尾,您可以看到佔有量詞的另一個示例。