亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么用python正則表達式解決包含且不包含某字符串的問題

發布時間:2021-08-06 18:35:37 來源:億速云 閱讀:406 作者:chen 欄目:編程語言

本篇內容主要講解“怎么用python正則表達式解決包含且不包含某字符串的問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用python正則表達式解決包含且不包含某字符串的問題”吧!

  本測試使用python的re.compile與re.search作為方法測試包含error不包含abc的實例

  python簡單正則里只介紹到了不包含某字符的正則:[^1-9a-z],[^abc]也只能完成不匹配a、b、c三個字母的功能,但是這個并不能實現不匹配"abc“字符串的功能

  這里要用到正則表達式中的斷言知識:

  (?=X )

  零寬度正先行斷言。僅當子表達式 X 在 此位置的右側匹配時才繼續匹配。例如,/w+(?=/d) 與后跟數字的單詞匹配,而不與該數字匹配。此構造不會回溯。

  (?!X)

  零寬度負先行斷言。僅當子表達式 X 不在 此位置的右側匹配時才繼續匹配。例如,例如,/w+(?!/d) 與后不跟數字的單詞匹配,而不與該數字匹配 。

  (?<=X)

  零寬度正后發斷言。僅當子表達式 X 在 此位置的左側匹配時才繼續匹配。例如,(?<=19)99 與跟在 19 后面的 99 的實例匹配。此構造不會回溯。

  (?

  零寬度負后發斷言。僅當子表達式 X 不在此位置的左側匹配時才繼續匹配。例如,(?

  從斷言的表達形式可以看出,它用的就是分組符號,只不過開頭都加了一個問號,這個問號就是在說這是一個非捕獲組,這個組沒有編號,不能用來后向引用,只能當做斷言。(對于正則表達式的斷言感興趣的同學,可以再查一查資料,這里不多做贅述)

  所以這里我們不想匹配abc字符串就得用這個表達式: (?!abc)

  測試代碼:

  import re

  p = re.compile(r'error(?!abc)'

  print p.search("errorabc")

  print p.search("errorab")

  結果:

  None

  <_sre.SRE_Match object at 0x7f129ce34b90>

  那么我想不匹配"error123bsc"這個字符串呢?你是不是以為 error.*(?!abc) 這么寫這個正則就可以了,我們來試試

  import re

  p = re.compile(r'error.*(?!abc)'

  print p.search("error123abc")

  結果:

  <_sre.SRE_Match object at 0x7f129ce34bf8>

  看,失敗了吧!那怎么寫呢?這么寫:error((?!abc).)*$

  知道了(?!abc),那么可以理解((?!abc).)* 的意思就是匹配 不含abc的字符(?!abc) 跟 任意字符. 的組合,出現任何次*

  很多人會問,"$"不是匹配行末尾么,確實是這個意思,不明白請精度上面一句話再來看正則,然后我們來測一下:

  import re無錫人流醫院 http://www.0510bhyy.com/

  p = re.compile(r'error((?!abc).)*$')

  print p.search("error123abc")

  print p.search("error123abc123")

  print p.search("error123ab123")

  結果:

  None

  None

  <_sre.SRE_Match object at 0x7f129ce81a08>

  明白了吧!

  以此類推,你要是想匹配包含error不包含error前后的abc,那么應該是這么寫這個正則:

  測一下:

  import re

  p = re.compile(r'^((?!abc).)*error((?!abc).)*$')

  print p.search("123abc123error123")

  print p.search("123ab123error123")

  結果:

  None

  <_sre.SRE_Match object at 0x7f129ce81a08>

  我們要是想匹配包含error不包含多個字符串,比如abc和def,這么寫正則: error((?!(abc|def)).)*$

  測試:

  import re

  p = re.compile(r'error((?!(abc|def)).)*$')

  print p.search("error123abc234")

  print p.search("error123ab234")

  print p.search("error123def234")

  結果:

  None

  <_sre.SRE_Match object at 0x7f87973eccf0>

  None

  測試完成!

到此,相信大家對“怎么用python正則表達式解決包含且不包含某字符串的問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

万全县| 大理市| 虞城县| 辉县市| 赫章县| 门源| 台江县| 珲春市| 西畴县| 白银市| 阿合奇县| 基隆市| 九龙县| 聊城市| 图们市| 灵寿县| 离岛区| 仁怀市| 宜黄县| 萨嘎县| 凤阳县| 合阳县| 桂林市| 崇文区| 广昌县| 酉阳| 铜陵市| 洪雅县| 巨鹿县| 牙克石市| 雷山县| 镇平县| 东安县| 丁青县| SHOW| 朝阳区| 乡城县| 吉水县| 苍梧县| 江都市| 黔南|