2014-05-13 39 views
1
g -- This option finds all occurrences of the pattern in the string 

這是否意味着它是貪婪?因爲它使正則表達式引擎解析整個字符串,而不是在第一次匹配時返回。這就是非貪婪匹配的意思。它可以被歸類爲貪婪或非貪婪?/perg也是貪婪的嗎?

+3

'g'是__modifier__。你的正則表達式會定義它是否貪婪。 – devnull

+2

你對_greedy_的​​理解是錯誤的。 – devnull

+0

閱讀_fantastic_文檔。 'perldoc perlre'可能會有所幫助。 – devnull

回答

1

貪婪會消耗盡可能多。

因此,例如<.+>將匹配整個<EM>first</EM>

然而<.+?>會,因爲它是懶惰匹配僅匹配<EM>

現在您必須瞭解/g修飾符可以與貪婪匹配和惰性匹配一起使用。

例如,

<EM>first</EM> 

,並使用<.+>/g它將替換指定的一個充分體現。

但是<.+?>/g將僅用指定的表達式代替<EM></EM>

2

g是全球的標誌。這意味着它會在找到之後繼續尋找匹配。

g是不是貪婪。在正則表達式貪婪這個詞用來表示一個令牌將盡可能匹配儘可能多的字符,根據需要回饋。例如。 \w+

所有格匹配表示令牌將匹配儘可能多的字符,而不會返回。例如。 \w++

+1

「g不貪婪」,只是在蘋果不貪婪的意義上說。貪婪或缺乏不是可以適用於g旗,其效果或蘋果的質量。 – ikegami

+0

我的意思是它不像貪婪一樣,它不叫「貪婪的旗幟」。這是全球的標誌。 –