首頁  >  文章  >  後端開發  >  php—PCRE正規表示式斷言

php—PCRE正規表示式斷言

伊谢尔伦
伊谢尔伦原創
2016-11-21 17:16:071549瀏覽

一個斷言就是一個對當前匹配位置之前或之後的字符的測試, 它不會實際消耗任何字符。簡單的斷言程式碼有b、B、 A、 Z、z、 ^、$ 等等。 更複雜的斷言以子組的方式編碼。 它有兩種類型:前瞻斷言(從當前位置向前測試)和後瞻斷言(從當前位置向後測試)。

一個斷言子組的匹配還是通過普通方式進行的, 不同在於它不會導致當前的匹配點改變。前瞻性斷言中的正面斷言(斷言此匹配為真)以”(?=” 開始,消極斷言以”(?!” 開頭。比如, w+(?=;) 匹配一個單詞緊跟著一個分號但是匹配結果不會包含分號, foo(?!bar) 符合所有後面沒有緊接」bar」 的」foo」 字串。 ”foo” 的”bar” 匹配, 它會查找到任意的”bar” 出現的情況, 因為(?!foo) 這個斷言在接下來三個字符時”bar” 的時候是永遠都 TRUE 的。需要達到的就是這樣的效果。前面不是”foo” 的”bar”。

斷言可以以任意複雜度嵌套。 例如 (?

斷言子組時非捕獲子組,並且不能用量詞修飾, 因為對同一件事做多次斷言是沒有意義的.如果所有的斷言都包含一個捕獲子組, 那麼為了在整個模式中捕獲子組計數的目的,它們都會被計算在內。然而, 子字串的捕獲僅可以用於正面斷言,因為對於消極的斷言是沒有意義的。

將斷言計算在內,可以擁有的最大子組數量是 200 個。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn