Python3中的正規表示式問題

2021-08-19 01:45:53 字數 1154 閱讀 7002

1.讓點可以匹配所有字元包括換行符

reg=re.compile(r'(?<= id=\"content\">).*?(?=

)', re.s)

text=re.findall(reg,html )

2. 精確匹配和最小匹配

『』      精確匹配m次

『』   匹配最少m次,最多n次。(n>m)

如果你只想指定乙個最少次數或只指定乙個最多次數,你可以把另外乙個引數空起來。比如你想指定最少3次,可以寫成     (注意那個逗號),同樣如果只想指定最大為5次,可以寫成,也可以寫成。

3.『*?』 『+?』 『??』 最小匹配

『*』 『+』 『?』:0/多;1/多;0/1

4. 1 前向界定與後向界定

(?<=…) 前向界定    (?=…)  後向界定:引數字串必須定大小

>>> s=r'/*djwehfunj*/'

>>> re.findall( r』(?<=/\*).+?(?=\*/)』 , s )            #'djwehfunj'

例:在下面的字串中想找到被字母夾在中間的數字,你不可以用前向界定:

>>> s = 『aaa111aaa , bbb222 , 333ccc 『

>>> re.findall( r』(?<=[a-z]+)\d+(?=[a-z]+)' , s )     #error錯誤資訊:error: look-behind requires fixed-width pattern    

不過如果你只要找出後面接著有字母的數字,你可以在後向界定寫正則式:

>>> re.findall( r』\d+(?=[a-z]+)』, s )            #

['111', '333']

如果你一定要匹配包夾在字母中間的數字,你可以使用組(group)的方式

>>> re.findall (r'[a-z]+(\d+)[a-z]+' , s )            #

['111']

4.2前向非界定和後向非界定

(?>> re.findall( r』\d+(?!\w+)』 , s )            #['222']

>>> re.findall( r』\d+(?![a-z]+)』 , s )                #['11', '222', '33']

python3中的正規表示式

精確匹配 d 匹配乙個數字 w 匹配乙個字母或數字 匹配任意乙個字元 s 匹配乙個空格 包括tab等空白符 匹配變長的字元 匹配任意個字元,包括0個 匹配至少乙個字元 匹配0個或乙個字元 匹配n個字元 匹配n m個字元 eg 說明 d s d 的含義 d 表示匹配3個數字,例如 028 s 表示匹配...

python3正規表示式

正規表示式,又稱規則表示式。英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙個...

Python3 正規表示式

常用的匹配模式 正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。re 模組使 python 語言擁有全部的正規表示式功能。re.match函式 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.match...