筆記 關於正規表示式(二)正向斷言 反向斷言舉例

2021-10-01 09:03:49 字數 487 閱讀 8331

假如有這樣乙個字串:s="ea567bka12345678bdca987654321bdca147bn" 

目標:想要獲取a和b中間的連續數字,並且a前面不能是k,b後面必須是d的中間數字串。

設定正規表示式需要用到正向斷言和反向斷言。

設定規則如下 :r'(?<=[^k]a)\d+(?=bd)'

字串符合這樣條件的只有乙個,那就是第20到時第29個連續數字字元'987654321',這樣就將符合條件的a和b中間的連續數字提取了出來。

可能還會問,上面正向斷言和反向斷言規則是不是可以這樣寫:

1、r'(?<=[^k])a\d+(?=b)d',這個規則沒有匹配的字串,因為最後乙個d造成無法匹配;

2、r'(?<=[^k])a\d+(?=bd)',這個規則匹配的是'a987654321'

3、r'(?4、r'(?後面3、4用到了反向否定斷言。

以上通過非捕獲匹配返回的是迭代器,需要通過for迴圈提取,匹配位置和匹配字串。

正規表示式 斷言

密碼的正規表示式,要求是密碼8 16位,必須包含數字大小寫字母以及特殊字元 高人寫的 pwd pattern a z a z a za z0 9 經過學習,分析如下 a z 斷言,只匹配乙個位置 比如,你想匹配乙個 人 字,但是你只想匹配中國人的人字,不想匹配法國人的人,就可以用 中國 人 a z ...

正規表示式 零寬斷言 五 正向零寬斷言

正向零寬斷言 1 exp 正向 先行斷言。匹配後面是exp的位置 2 exp 正向回顧後發斷言。匹配前面是exp的位置 例項演示1 exp antzone 正則 w 圖示 解釋 表示以位置0開始匹配 注意 是零寬符號,但不具備回溯 w 因為回到了0位置,則開始又一次判斷樣式 w 結果匹配成功 然後 ...

正規表示式之斷言

零寬斷言的意思是 匹配寬度為零,滿足一定的條件 斷言 我也不知道這個詞語是那個王八蛋發明的,簡直是太拗口了。零寬斷言用於查詢在某些內容 但並不包括這些內容 之前或之後的東西,也就是說它們像 b,那樣用於指定乙個位置,這個位置應該滿足一定的條件 即斷言 因此它們也被稱為零寬斷言。斷言用來宣告乙個應該為...