你說對了。 .*
直到字符串或第一個換行符結束。
然後,它會回溯。
請參閱下一個正則表達式標記是必需的"
。所以你有匹配它的比賽成功。
因此,*
將「放棄」一個字符,並試圖以匹配"
將再次生成的字符串進行:
"string one" and "string two". Please respond
這種失敗,所以*
會放棄另一一個等:
"string one" and "string two". Please respon
"string one" and "string two". Please respo
"string one" and "string two". Please resp
"string one" and "string two". Please res
... snip ...
"string one" and "string two". P
"string one" and "string two".
"string one" and "string two"
"string one" and "string two
啊哈,這串後面緊跟"
,所以它被消耗,匹配成功的:
"string one" and "string two"
你可能想嘗試的ungreedy版本:".*?"
。在這種情況下,*?
將嘗試匹配任何字符(.
)儘可能少的次數成功匹配。
對於匹配成功,您仍然需要關閉"
,因此.*?
版本將嘗試消耗字符,直到引擎可以在該模式中繼續前進。你會得到的結果將是:
"string one"
*是貪婪和吃外話之間的一切。 –