中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

正則表達式中斷言、巡視、正向斷言、反向斷言的示例分析

發布時間:2021-09-28 17:27:51 來源:億速云 閱讀:261 作者:小新 欄目:互聯網科技

小編給大家分享一下正則表達式中斷言、巡視、正向斷言、反向斷言的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

斷言(Assertions)在正則表達式概念里面難理解,它通常指的是在目標字符串的當前匹配位置進行的一種測試但這種測試并不占用目標字符串,也即不會移動模式在目標字符串中的當前匹配位置。詳細可以看看,正則表達式匹配解析過程探討分析(正則表達式匹配原理),里面提到“零寬度“很多元字符,只是對特殊位置進行匹配,它們可以理解為斷言。

斷言元字符

常見斷言元字符有: \b, \B, \A, \Z, \z, ^ ,$ 它們只是表示特殊位置,各自作用如有字符串AB,帶位置表示為:0A1B2

元字符意義(以上面帶位置字符串說明)
^行首,字符串首 表示位置0
$行尾,字符串尾部,表示位置2
\b字分界線,可以表示:0,2位置
\B非字分界線,可以表示1位置
\A目標的開頭(獨立于多行模式) 表示位置0
\Z目標的結尾或位于結尾的換行符前(獨立于多行模式) 表示位置2
\z目標的結尾(獨立于多行模式)表示位置2
\G目標中的第一個匹配位置
A,Z,z,G很少使用

這些斷言的測試都是一些基于當前位置的測試,斷言還支持更多復雜的測試條件。更復雜的斷言以子模式方式來表示,它包括先行(前向)斷言(Lookahead assertions)和后行(后向)斷言(Lookbehind assertions),這些斷言判斷只做匹配判斷條件,不會記錄在匹配結果中,不會匹配字符。

先行斷言、正向斷言、正向巡視(Lookahead assertions)

先行斷言,常有表示(?=pattern),從當前匹配位置開始測試后面匹配字符串是否成立,還有(?!pattern)這樣兩種格式,我們來看看一個例子。源字符串:“abc100”,正則表達式是:
/[a-z]+(?=\d+)/ ,我們分析下過程如下圖:

正則表達式中斷言、巡視、正向斷言、反向斷言的示例分析

首先由正則表達式字符 [a-z]+ 取得控制權,匹配字符:”abc”,位置從”0”開始匹配,變成3。從該位置測試/d+是否成立。匹配到字符100,返回成立。因此正則表達式正向斷言成功。返回匹配字符串”abc”

(?!pattern) 只是,正向匹配,當后面沒有匹配成功,將返回真。以下是系統源字符串:abc100,測試結果如下:

正則表達式中斷言、巡視、正向斷言、反向斷言的示例分析

后行斷言、反向斷言、反向巡視(Lookbehind assertions)

后行斷言,常見表達式是:(?<=pattern)或者(?<!pattern)格式。正則表達式里面,不要出現不固定長度量詞,可能會出現死循環。匹配出錯。表示當前位置左邊將出現匹配字符,則返回真,后面匹配正常。因為如果它出現在最左邊,默認位置從0開始,匹配都是失敗的。一般都從后面正則表達式開始匹配,再回溯,直到匹配到為止。我們看看下面例子:源字符串:“abc100+=“,正則表達式是:”(?<=\w)\w+”,匹配過程如下圖:

正則表達式中斷言、巡視、正向斷言、反向斷言的示例分析

首先由正則表達式字符 /\w+/取得控制權,匹配字符:”abc100”,位置從”0”開始匹配,匹配到6個字符。從該位置0檢測左變\w匹配失敗。因此/\w+/從字符b開始匹配到”bc100”,測試它左側有字符”a”,反向斷言正確。因此匹配到字符串“bc100”,(?<!pattern),只是沒有匹配成功返回真,其它都一樣!

以上是“正則表達式中斷言、巡視、正向斷言、反向斷言的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

信丰县| 岱山县| 清丰县| 涿鹿县| 阿拉善左旗| 顺昌县| 建阳市| 大埔县| 广昌县| 镇江市| 克东县| 张家口市| 杭锦后旗| 沧州市| 岳阳市| 孝昌县| 榆树市| 弥勒县| 张北县| 福贡县| 达拉特旗| 平昌县| 家居| 临江市| 揭西县| 双柏县| 宣化县| 抚远县| 宜黄县| 章丘市| 肇东市| 凤阳县| 余干县| 凉城县| 建平县| 繁峙县| 固安县| 长顺县| 新建县| 汉沽区| 桐梓县|