1. 程式人生 > >re正則表示式模組

re正則表示式模組

import re
print(re.match('^chenrong','chenronghua123'))  # ^ 表示開頭
#<_sre.SRE_Match object; span=(0, 8), match='chenrong'>
# span=(
匹配到的結果第幾位開始,匹配到的長度)
#
有返回表示匹配到了,沒返回表示沒有匹配到
print(re.match('^chen','chengronghua123').group()) #group 獲取匹配的欄位
res=re.match('^chen','chengronghua123')
print(res.group())

res=re.match(

'^chen\d','chen321ronghua123'# \d 表示數字 匹配一個數字
print(res,'--------',res.group())

res=re.match(
'chen\d+','chen321ronghua123') #\d+ 表示一個或多個數字 match從頭開始
print(res,'--------',res.group())

res=re.match(
"c.+","chen321ronghua123") # .點表示匹配任意字元
print(res)

res=re.search(
"r.+a$","chen321ronghua123a"
)
#search從整個文字搜尋  a$表示整個字串a結尾
print(res)

res=re.search(
'R[a-zA-Z]+a','chen321RongAhuaRonghua123arongHua12') #只匹配第一個
print(res)

res=re.search(
"aaa?",'aalexaaa') #a? 表示0次或1 都會返回結果 也就是有或沒有 有或沒有前面的那個a
print(res)

res=re.search(
"[0-9]{1,3}",'aa1x2a345aa') #{1,3}  表示出現的13
print(res)

res=re.findall(
"[0-9]{1,3}","aa1x2a345aa") #findall 找出所有
print(res)

res=re.findall(
"abc|ABC","ABCabcCD") # | 或的意思
print(res)

res=re.search(
"(abc){2}(\|=){2}","alexabcabc|=|="# \|  斜槓對 | 進行轉譯
print(res)                  #(abc){2}(\|=){2} 分組匹配

res=re.search("\A[0-9]+[a-z]\Z","123a") #\A[0-9] 數字開頭 [a-z]\Z 數字結尾
print(res) # \A開頭 \Z結尾

res=re.search("\D+","123$- \r\n a") #\D 匹配非數字
print(res)

res=re.findall(
"\w","aB123- \r\n a") #\w匹配數字字母
print(res)

res=re.findall(
"\W","1ddDFR23$ - \r\n a") #\W匹配特殊字元
print(res)

res=re.findall(
"\s","1dd    ng yh\r\n   ") #\s匹配空白字元 包括空格 tab 換行
print(res)

res=re.search(
"(?P<id>[0-9]+)(?P<name>[a-zA-Z]+)","[email protected]").groupdict()
print(res)

#特殊用法 (?P<自定義key>[需要找的]{個數})
res=re.search("(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<county>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict()
print(res)

print(re.search("(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<county>[0-9]{2})(?P<birthyear>[0-9]{4})(?P<birthday>[0-9]{4})", \
"360732199307030689").groupdict()['birthday'])

#split分隔
res=re.split("[0-9]+","abc12de3f45Gh") #按數字進行分隔 split:分隔
print(res)

#sub替換
res=re.sub("[0-9]+","----","abc12de3f45Gh",count=2) #所有的數字替換成----,替換前面2
print(res)

# 只能匹配 \\ 2個斜槓
res=re.search(r"\\","abc12de\\3f45GH")
print(res)

#忽略大小寫 flags=re.I flags=re.IGNORECASE  flags:標示,標註,定義
res=re.search("[a-z]+","ancdA",flags=re.IGNORECASE)
print(res)

#多行模式 flags=re.M flags=re.MULTILINE 一樣 改變開頭 ^ 結尾$的行為
res=re.search("[a-z]+e$","abcdA\r\nsecondline\r\nthirdline",flags=re.M)
print(res,'---',res.group())

#S(DOTALL)模式 匹配包括換行符的任意字元 flags=re.DOTALL flags=re.S
res=re.search(r".+","\r\nabc\r\neee",flags=re.DOTALL)
print(res)