【資源】
官方說明: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 對特殊字元進行轉義 在正規表示式中如果是引用特殊字元作為...