JAVA 正則之 貪婪與非貪婪模式概述(1)

2021-08-15 22:28:52 字數 503 閱讀 3648

貪婪與非貪婪模式影響的是被量詞修飾的子表示式的匹配行為,貪婪模式在整個表示式匹配成功的前提下,盡可能多的匹配,而非貪婪模式在整個表示式匹配成功的前提下,盡可能少的匹配。非貪婪模式只被部分nfa引擎所支援。

屬於貪婪模式的量詞,也叫做匹配優先量詞,包括:

「」、「」、「?」、「*」和「+」。

在一些使用nfa引擎的語言中,在匹配優先量詞後加上「?」,即變成屬於非貪婪模式的量詞,也叫做忽略優先量詞,包括:

「?」、「?」、「??」、「*?」和「+?」。

從正則語法的角度來講,被匹配優先量詞修飾的子表示式使用的就是貪婪模式,如「(expression)+」;被忽略優先量詞修飾的子表示式使用的就是非貪婪模式,如「(expression)+?」。

對於貪婪模式,各種文件的叫法基本一致,但是對於非貪婪模式,有的叫懶惰模式或惰性模式,有的叫勉強模式,其實叫什麼無所謂,只要掌握原理和用法,能夠運用自如也就是了。個人習慣使用貪婪與非貪婪的叫法,所以文中都會使用這種叫法進行介紹。 

出處:

貪婪與非貪婪模式

對於匹配優先量詞的匹配下限很好理解,等價於 它修飾的子表示式,最少匹配0次,最多匹配1次 等價於 它修飾的子表示式,最少匹配0次,最多匹配無窮多次 等價於 它修飾的子表示式,最少匹配1次,最多匹配無窮多次。對於忽略優先量詞的下限,也是容易忽略的。也是忽略優先量詞,被修飾的子表示式使用的也是非貪婪模式...

PHP正則之貪婪和非貪婪模式

php的正規表示式 非貪婪模式,盡量少匹配符合條件的專案 貪婪模式,盡量多匹配符合條件的專案 非貪婪模式 a 123123123 pattern 1 string 38 正則替換 非貪婪模式 str remove a tag hello worldkim green goodstudy patter...

Python正則貪婪非貪婪

自己遇到的問題,小記一下!coding utf 8 author johnny import re line baaaaacfbsbdada reg str b.b match str re.match reg str,line if match str print match str.group ...