Python 正規表示式re

2021-09-10 02:26:58 字數 2227 閱讀 8805

【資源】

官方說明:help(re) #命令列檢視官方解釋視覺化正規表示式

教程【特殊字元】

常用功能

說明「^」

開頭「^x」,以x字元開頭

「$」結尾

「x$」,以x字元結尾

「.」任意字元(≥0)

「()」

提取子串

math_obj.group(1) #匹配成功後,拿出第乙個括號裡的子串

「?」非貪婪匹配

詳細說明

「|」或者

「」1. 中括號裡的任意乙個

2. 可以用區間

3. 中括號裡的^代表非

4. 中括號裡的字元沒有特殊意義

1. "[abcd]"

2. "[0-9a-z]"

3. 「[^1]「表示≠1

4. 「[.*]」,表示字元」.*」,不表示任意字元並重複多次

【字元】

名稱說明

「\s」

空格「\s」

與"\s"相反,只要不是空格都可以

「\w」

為任意字元,等同於[a-za-z0-9_]

「\w」

與"\w"相反,不為a-z、a-z、0-9

「[\u4e00-\u9fa5]」

漢字「\d」

數字【出現次數】

名稱功能

說明「*」

重複次數

「x*」,x可以重複任意多次(x出現≥0次)

「+」至少一次

「x+」,x至少出現一次

「」出現次數

「x」,x出現2次

「」出現次數

「x,x出現2次以上」

「」出現次數

「x」,x出現2-5次

【貪心greedy】將匹配盡可能多的重複

【非貪婪模式】"?()":()裡的字元從右往左第乙個

>>

>

import re

>>

> line =

"texttextttee***tt"

# 模式串".*(t.*t).*"

# 【猜想】滿足條件的所有可能:

# 'texttextttee***tt'

# 'ttextttee***tt'

# 'textttee***tt'

# 'tttee***tt'

# 'ttee***tt'

# 'tee***tt'

# 'tt'

# 't'

# 'tt'

# 'texttextttee***t'

# 'texttexttt'

# 'texttextt'

# 'texttext'

# 'textt'

# 'text'

>>

> match_obj = re.match(

".*(t.*t).*"

, line)

#預設貪婪

>>

> match_obj.group(1)

'tt'

>>

> match_obj = re.match(

".*?(t.*t).*"

, line)

#左邊界非貪婪

>>

> match_obj.group(1)

'texttextttee***tt'

>>

> match_obj = re.match(

".*(t.*t?).*"

, line)

#右邊界非貪婪

>>

> match_obj.group(1)

't'>>

> match_obj = re.match(

".*?(t.*t?).*"

, line)

#左右邊界非貪婪

>>

> match_obj.group(1)

'texttextttee***tt'

【提取年月日】"(\d[年/-]\d([月/-]\d|[月/-]$|$))"

line = "2023年6月1日"

line = "2001/6/1"

line = "2001-6-1"

line = "2001-06-01"

line = "2001-06"

python 正規表示式 re

match 和 search 的區別 match是從字串開頭匹配,而search是在整個字串中匹配。如 p re.compile a z p.match message none 因為開頭是 因此無法匹配 而 m p.search message print m re.matchobject ins...

python正規表示式 re

re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import retext jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text ifm print m.group 0 n m...

python正規表示式(re)

在python中re模組用於對正規表示式 regular expression 的支援。正規表示式是可以匹配文字片段的模式。一 正規表示式的書寫 1 萬用字元 點 可以匹配任何字元 除了換行符 如 ike 可以匹配 bike like 等 2 對特殊字元進行轉義 在正規表示式中如果是引用特殊字元作為...