国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PYthon正則表達式

這篇具有很好參考價值的文章主要介紹了PYthon正則表達式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。

1 正則表達式語法

PYthon正則表達式,python,正則表達式

1.1 字符與字符類

PYthon正則表達式,python,正則表達式

1.1.1 特殊字符

\.^$?+*{}[]()|
以上特殊字符要想使用字面值,必須使用\進行轉(zhuǎn)義

1.1.2 字符類   ?

  • 包含在[]中的一個或者多個字符被稱為字符類,字符類在匹配時如果沒有指定量詞則只會匹配其中的一個。

  • 字符類內(nèi)可以指定范圍,比如[a-zA-Z0-9]表示a到z,A到Z,0到9之間的任何一個字符

  • 左方括號后跟隨一個^,表示否定一個字符類,比如[^0-9]表示可以匹配一個任意非數(shù)字的字符。

  • 字符類內(nèi)部,除了\之外,其他特殊字符不再具備特殊意義,都表示字面值。^放在第一個位置表示否定,放在其他位置表示^本身,-放在中間表示范圍,放在字符類中的第一個字符,則表示-本身。

  • 字符類內(nèi)部可以使用速記法,比如\d \s \w

1.1.3 速記法

  • . 可以匹配除換行符之外的任何字符,如果有re.DOTALL標志,則匹配任意字符包括換行

  • \d 匹配一個Unicode數(shù)字,如果帶re.ASCII,則匹配0-9

  • \D 匹配Unicode非數(shù)字

  • \s 匹配Unicode空白,如果帶有re.ASCII,則匹配\t\n\r\f\v中的一個

  • \S 匹配Unicode非空白

  • \w 匹配Unicode單詞字符,如果帶有re.ascii,則匹配[a-zA-Z0-9_]中的一個

  • \W 匹配Unicode非單子字符

 1.2 量詞  

  • ? 匹配前面的字符0次或1次

  • * 匹配前面的字符0次或多次

  • + 匹配前面的字符1次或者多次

  • {m} 匹配前面表達式m次

  • {m,} 匹配前面表達式至少m次

  • {,n} 匹配前面的正則表達式最多n次

  • {m,n} 匹配前面的正則表達式至少m次,最多n次

注意:以上量詞都是貪婪模式,會盡可能多的匹配,如果要改為非貪婪模式,通過在量詞后面跟隨一個?來實現(xiàn)

1.3 組與捕獲

1.3.1? ()的作用      

  • 捕獲()中正則表達式的內(nèi)容以備進一步利用處理,可以通過在左括號后面跟隨?:來關(guān)閉這個括號的捕獲功能
  • 將正則表達式的一部分內(nèi)容進行組合,以便使用量詞或者|

1.3.2 反響引用前面()內(nèi)捕獲的內(nèi)容:

  • 通過組號反向引用:每一個沒有使用?:的小括號都會分配一個組好,從1開始,從左到右遞增,可以通過\i引用前面()內(nèi)表達式捕獲的內(nèi)容

  • 通過組名反向引用前面小括號內(nèi)捕獲的內(nèi)容:可以通過在左括號后面跟隨?P<name>,尖括號中放入組名來為一個組起一個別名,后面通過(?P=name)來引用 前面捕獲的內(nèi)容。如(? P<word>\w+)\s+(?P=word)來匹配重復(fù)的單詞。

注意:反向引用不能放在字符類[]中使用。

1.4 斷言與標記 

斷言不會匹配任何文本,只是對斷言所在的文本施加某些約束

1.4.1 常用斷言

  • \b 匹配單詞的邊界,放在字符類[]中則表示backspace

  • \B 匹配非單詞邊界,受ASCII標記影響

  • \A 在起始處匹配

  • ^ 在起始處匹配,如果有MULTILINE標志,則在每個換行符后匹配

  • \Z 在結(jié)尾處匹配

  • $ 在結(jié)尾處匹配,如果有MULTILINE標志,則在每個換行符前匹配

  • (?=e) 正前瞻

  • (?!e) 負前瞻

  • (?<=e) 正回顧

  • (?<!e) 負回顧

1.4.2 前瞻回顧的解釋

  • 前瞻: exp1(?=exp2) exp1后面的內(nèi)容要匹配exp2
  • 負前瞻: exp1(?!exp2) exp1后面的內(nèi)容不能匹配exp2
  • 后顧: (?<=exp2)exp1 exp1前面的內(nèi)容要匹配exp2
  • 負后顧: (?<!exp2)exp1 exp1前面的內(nèi)容不能匹配exp2

例如:我們要查找hello,但是hello后面必須是world,正則表達式可以這樣寫:"(hello)\s+(?=world)",用來匹配"hello wangxing"和"hello world"只能匹配到后者的hello

1.5 條件匹配

(?(id)yes_exp|no_exp):對應(yīng)id的子表達式如果匹配到內(nèi)容,則這里匹配yes_exp,否則匹配no_exp

1.6 正則表達式的標志 

1.6.1 正則表達式的標志有兩種使用方法

  • 通過給compile方法傳入標志參數(shù),多個標志使用|分割的方法,如re.compile(r"#[\da-f]{6}\b", re.IGNORECASE|re.MULTILINE)
  • 通過在正則表達式前面添加(?標志)的方法給正則表達式添加標志,如(?ms)#[\da-z]{6}\b

1.6.2常用的標志

  • re.A或者re.ASCII, 使\b \B \s \S \w \W \d \D都假定字符串為假定字符串為ASCII
  • re.I或者re.IGNORECASE 使正則表達式忽略大小寫
  • re.M或者re.MULTILINE 多行匹配,使每個^在每個回車后,每個$在每個回車前匹配
  • re.S或者re.DOTALL 使.能匹配任意字符,包括回車
  • re.X或者re.VERBOSE 這樣可以在正則表達式跨越多行,也可以添加注釋,但是空白需要使用\s或者[ ]來表示,因為默認的空白不再解釋。

如:
 re.compile(r"""
 <img\s +) #標簽的開始
 [^>]*? #不是src的屬性
 src= #src屬性的開始
 (?:
 (?P<quote>["']) #左引號
 (?P<image_name>[^\1>]+?) #圖片名字
 (?P=quote) #右括號
 """,re.VERBOSE|re.IGNORECASE)

2 Python正則表達式模塊

2.1 正則表達式處理字符串主要有四大功能

  • 匹配 查看一個字符串是否符合正則表達式的語法,一般返回true或者false
  • 獲取 正則表達式來提取字符串中符合要求的文本
  • 替換 查找字符串中符合正則表達式的文本,并用相應(yīng)的字符串替換
  • 分割 使用正則表達式對字符串進行分割。

2.2 Python中re模塊使用正則表達式的兩種方法

  • 使用re.compile(r, f)方法生成正則表達式對象,然后調(diào)用正則表達式對象的相應(yīng)方法。這種做法的好處是生成正則對象之后可以多次使用。
  • re模塊中對正則表達式對象的每個對象方法都有一個對應(yīng)的模塊方法,唯一不同的是傳入的第一個參數(shù)是正則表達式字符串。此種方法適合于只使用一次的正則表達式。

2.3 正則表達式對象的常用方法

  • rx.findall(s,start, end):返回一個列表,如果正則表達式中沒有分組,則列表中包含的是所有匹配的內(nèi)容,如果正則表達式中有分組,則列表中的每個元素是一個元組,元組中包含子分組中匹配到的內(nèi)容,但是沒有返回整個正則表達式匹配的內(nèi)容
  • rx.finditer(s, start, end):返回一個可迭代對象,對可迭代對象進行迭代,每一次返回一個匹配對象,可以調(diào)用匹配對象的group()方法查看指定組匹配到的內(nèi)容,0表示整個正則表達式匹配到的內(nèi)容
  • rx.search(s, start, end):返回一個匹配對象,倘若沒匹配到,就返回None;search方法只匹配一次就停止,不會繼續(xù)往后匹配
  • rx.match(s, start, end):如果正則表達式在字符串的起始處匹配,就返回一個匹配對象,否則返回None
  • rx.sub(x, s, m):返回一個字符串。每一個匹配的地方用x進行替換,返回替換后的字符串,如果指定m,則最多替換m次。對于x可以使用/i或者/g<id>id可以是組名或者編號來引用捕獲到的內(nèi)容。模塊方法re.sub(r, x, s, m)中的x可以使用一個函數(shù)。此時我們就可以對捕獲到的內(nèi)容推過這個函數(shù)進行處理后再替換匹配到的文本。
  • rx.subn(x, s, m):與re.sub()方法相同,區(qū)別在于返回的是二元組,其中一項是結(jié)果字符串,一項是做替換的個數(shù)。
  • rx.split(s, m):分割字符串返回一個列表;用正則表達式匹配到的內(nèi)容對字符串進行分割;如果正則表達式中存在分組,則把分組匹配到的內(nèi)容放在列表中每兩個分割的中間作為列表的一部分,如:
      rx = re.compile(r"(\d)[a-z]+(\d)")
      s = "ab12dk3klj8jk9jks5"
      result = rx.split(s)
      返回['ab1', '2', '3', 'klj', '8', '9', 'jks5']
  • rx.flags():正則表達式編譯時設(shè)置的標志
  • rx.pattern():正則表達式編譯時使用的字符串

2.4 匹配對象的屬性與方法

  • m.group(g, ...)

返回編號或者組名匹配到的內(nèi)容,默認或者0表示整個表達式匹配到的內(nèi)容,如果指定多個,就返回一個元組

  • m.groupdict(default)

返回一個字典。字典的鍵是所有命名的組的組名,值為命名組捕獲到的內(nèi)容
如果有default參數(shù),則將其作為那些沒有參與匹配的組的默認值。

  • m.groups(default)

返回一個元組。包含所有捕獲到內(nèi)容的子分組,從1開始,如果指定了default值,則這個值作為那些沒有捕獲到內(nèi)容的組的值

  • m.lastgroup()

匹配到內(nèi)容的編號最高的捕獲組的名稱,如果沒有或者沒有使用名稱則返回None(不常用)

  • m.lastindex()

匹配到內(nèi)容的編號最高的捕獲組的編號,如果沒有就返回None。

  • m.start(g):

當(dāng)前匹配對象的子分組是從字符串的那個位置開始匹配的,如果當(dāng)前組沒有參與匹配就返回-1

  • m.end(g)

當(dāng)前匹配對象的子分組是從字符串的那個位置匹配結(jié)束的,如果當(dāng)前組沒有參與匹配就返回-1

  • m.span()

返回一個二元組,內(nèi)容分別是m.start(g)和m.end(g)的返回值

  • m.re()

產(chǎn)生這一匹配對象的正則表達式

  • m.string()

傳遞給match或者search用于匹配的字符串

  • m.pos()

搜索的起始位置。即字符串的開頭,或者start指定的位置(不常用)

  • m.endpos()

搜索的結(jié)束位置。即字符串的末尾位置,或者end指定的位置(不常用)

2.5 總結(jié)

  • 對于正則表達式的匹配功能,Python沒有返回true和false的方法,但可以通過對match或者search方法的返回值是否是None來判斷

  • 對于正則表達式的搜索功能,如果只搜索一次可以使用search或者match方法返回的匹配對象得到,對于搜索多次可以使用finditer方法返回的可迭代對象來迭代訪問

  • 對于正則表達式的替換功能,可以使用正則表達式對象的sub或者subn方法來實現(xiàn),也可以通過re模塊方法sub或者subn來實現(xiàn),區(qū)別在于模塊的sub方法的替換文本可以使用一個函數(shù)來生成

  • 對于正則表達式的分割功能,可以使用正則表達式對象的split方法,需要注意如果正則表達式對象有分組的話,分組捕獲的內(nèi)容也會放到返回的列表中文章來源地址http://www.zghlxwxcb.cn/news/detail-796625.html

到了這里,關(guān)于PYthon正則表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 機器學(xué)習(xí)與數(shù)據(jù)科學(xué)-專題1 Python正則表達式-【正則表達式入門-1】

    機器學(xué)習(xí)與數(shù)據(jù)科學(xué)-專題1 Python正則表達式-【正則表達式入門-1】

    為了完成本關(guān)任務(wù),你需要掌握: 在 Python 中使用正則表達式; 最基礎(chǔ)正則表達式; 正則匹配函數(shù)。 在 Python 中使用正則表達式 正可謂人生苦短,我用 Python。Python 有個特點就是庫非常多,自然擁有正則匹配這種常見的庫,并且此庫已經(jīng)嵌入在 Python 標準庫中,使用起來非常

    2024年01月22日
    瀏覽(109)
  • 速通Python正則表達式

    幾乎所有語言中的正則表達式都有相類似的語法,python亦莫能外。 接下來直觀地看一下最常用的的三大函數(shù) 其中, re.match 要求從頭匹配; search 可以從任意位置匹配,但只返回第一個匹配的值的位置; findall 返回所有符合要求的值。 任意字符 . 匹配除了換行符之外的所有字

    2024年02月06日
    瀏覽(25)
  • Python 正則表達式轉(zhuǎn)義

    這篇文章是關(guān)于 Python 正則表達式轉(zhuǎn)義的。 此外,我們將介紹 Python 正則表達式轉(zhuǎn)義以及如何通過適當(dāng)?shù)氖纠a使用它,以及 Python 正則表達式的多種用途。 此外,Python 支持使用正則表達式(或正則表達式)對字符串進行搜索和替換操作。 RegEx 是一種根據(jù)預(yù)定義模式匹配文

    2024年02月09日
    瀏覽(20)
  • python之正則表達式

    目錄 正則表達式 python正則表達式方法? match search findall finditer compile 元字符匹配 元字符 量詞 貪婪匹配和惰性匹配 正則表達式的group 語法 案例? 正則表達式又稱規(guī)則表達式,是使用單個字符串來描述、匹配某個句法規(guī)則的字符串,常被用來檢索、替換那些符合某個模式的文

    2024年02月14日
    瀏覽(17)
  • Python正則表達式(小結(jié))

    正則表達式(regular expression,有時簡寫為RegEx 或 regex)就是用一組由字母和符號組成的“表達式”來描述一個特征,然后去驗證另一個“字符串”是否符合/匹配這個特征。 (1)驗證字符串是否符合指定特征,比如驗證郵件地址是否符合特定要求等; (2)用來查找字符串,

    2024年02月05日
    瀏覽(27)
  • Python學(xué)習(xí)之路-正則表達式

    正則表達式是計算機科學(xué)的一個概念。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些匹配某個模式的文本。 在Python中需要通過正則表達式對字符串進行匹配的時候,可以使用一個模塊

    2024年01月24日
    瀏覽(90)
  • python 之正則表達式詳解

    python 之正則表達式詳解

    分清字符串與字符 在Python中,前綴 r 或 R 表示原始字符串。這種原始字符串中的反斜杠字符 被視為普通字符,而不是轉(zhuǎn)義字符。這在處理正則表達式、文件路徑等需要保留反斜杠原始含義的情況下非常有用。 原始字符串的特點: 反斜杠不進行轉(zhuǎn)義: 在普通字符串中,反斜

    2024年02月06日
    瀏覽(32)
  • 正則表達式學(xué)習(xí)記錄(Python)

    一、特殊符號和字符 多個正則表達式匹配 ( | ) 用來分隔不同的匹配模式,相當(dāng)于邏輯或,可以符合其中任何一個正則表達式 匹配任意的單個字符 ( . ) 點號用來匹配除了換行符n 之外的任意一個字符 如果想要匹配該符號需要添加轉(zhuǎn)移符 . 匹配字符串開頭(^) 放在匹配

    2024年02月13日
    瀏覽(108)
  • python正則表達式筆記2

    由 \\\'\\\' 和一個字符組成的特殊序列在以下列出。 如果普通字符不是ASCII數(shù)位或者ASCII字母,那么正則樣式將匹配第二個字符。比如,$ 匹配字符 \\\'$\\\'. number 匹配數(shù)字代表的組合。每個括號是一個組合,組合從1開始編號。 比如 (.+) 1 匹配 \\\'the the\\\' 或者 \\\'55 55\\\', 但不會匹配 \\\'thethe\\\'

    2024年02月09日
    瀏覽(21)
  • python | 巧用正則表達式

    本文簡單總結(jié)正則表達式的一些語法規(guī)則和給出相關(guān)示例。 更新: 2023 / 7 / 1 正則匹配作為專業(yè)的查找工具,在判斷字符串中含有特定字串上效率相對較高。 正則表達式修飾符 —— 可選標志 正則表達式可以包含一些可選標志修飾符來控制匹配的模式。修飾符被指定為一個可

    2024年02月06日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包