首頁 後端開發 php教程 php—PCRE正規表示式條件子組

php—PCRE正規表示式條件子組

Nov 21, 2016 pm 05:12 PM

可以使匹配器根據一個斷言的結果, 或者之前的一個捕獲子組是否匹配來條件式的匹配一個子組或在兩個可選子組中選擇。 條件子組的兩種語法如下:

(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)
登入後複製

如果條件滿足,使用 yes-pattern,其他情況使用 no-pattern(如果指定了)。 如果有超過 2 個的可選子組,會產生給一個編譯期錯誤。

條件一共有兩種。如果在(condition)的括號內是數字組成的文本, 條件在該數字代表的(之前的)子組得到匹配時滿足(即使用 yes-pattern)。 考慮下面的模式, 為了使其易於閱讀其中增加了一些空白字符(查看PCRE_EXTENDED 選項)並且將其分為三個部分: ( ( )? [^()]+ (?(1) ) )

模式的第一部分匹配一個可選的左括號,如果該字元出現, 設定其為第一個子組的捕獲子字串。第二部分符合一個或多個非括號字元。 第三部分是條件子組,它會測試第一個子組是否匹配,如果匹配到了, 也就是說目標字符串以左括號開始,條件為TRUE, 那麼使用yes-pattern 也就是這裡需要匹配一個右括號。其他情況下, 既然 no-pattern 沒有出現,那麼這個子群組就不符合任何東西。換句話說, 這個模式匹配一​​個沒有括號的或閉合括號包裹的字元序列。

如果條件式字串 (R),它在得到模式或子模式的遞歸呼叫時滿足。 在”最上級”, 條件總是false。

如果條件不是數字序列或(R),它就必須是一個斷言。這裡的斷言可以使任意的,積極, 消極,正向,後向都是可以的。考慮這個模式, 同樣為了方便閱讀, 增加了一些空白字符,並且在第二行有兩個可選路徑。

(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} )
登入後複製

條件式一個正向積極斷言,匹配一個可選的非小寫字母字符序列緊接著一個小寫字母。 換一種說法,它測試目標中至少出現一個小寫字母,如果小寫字母發現, 目標匹配第一個可選分支,其他情況下它匹配第二個分支。 這個模式會符合兩種格式的字串:dd-aaa-dd 或 dd-dd-dd。 aaa 代表小寫字母, dd 是數字。


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

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles