#正規表示式,其實就是從一段字串中提取出需要的字元
import re #載入正規表示式模組
#re.findall(引數1,引數2,引數3) 引數1表示用什麼規則進行提取,引數2表示從哪個字串進行提取
#引數3一般有re.i 表示不區分大小寫,re.s 匹配多行中滿足條件的值
str1=
'abcdefg'
#. 萬用字元,匹配某個字元前面或後面的乙個字元
print
(re.findall(
'a.'
,str1)
)#提取a後面的乙個字元,返回值是列表,包括條件a也返回
print
(re.findall(
'a(.)'
,str1)
)#提取a後面的乙個字元,返回值是列表,不包括條件a
#* 萬用字元,匹配某個字元後面的若干個字元,若干也包括0個的情況
str1_1=
'abcdabbcbbbbeafg'
print
(re.findall(
'ab*'
,str1_1)
)#把所有a後面有若干個b的字元找出來,包括0個b的情況
#? 萬用字元,匹配某個字串後面有0-1個字元
str1_2=
'abacabbbbbd'
print
(re.findall(
'ab?'
,str1_2)
)#+ 萬用字元,匹配某個字串後面有乙個或多個字元,不包括0個的情況
print
(re.findall(
'ab+'
,str1_2)
)#.*? 提取字串兩端之間的內容 a(.*?)b
load1=
'一二三四五六七**'
print
(re.findall(
'三(.*?)六'
,load1)
)#如果只有一端給出了條件,值會怎麼取?
print
(re.findall(
'三(.*?)六'
,load1)
)#懶惰匹配,在符合查詢要求的情況下,盡可能少的匹配
print
(re.findall(
'(.*?)六'
,load1)
)#需要匹配的字串後面是'六',無法偷懶
#只給出一端的條件時,如果希望獲取後面全部的結果,則應當使用貪婪匹配
print
(re.findall(
'三(.*)六'
,load1)
)#貪婪匹配
#當有多個滿足條件的值時,兩者的結果並不相同
load1=
'一二六三四五六三七**六'
print
(re.findall(
'三(.*?)六'
,load1)
)#懶惰匹配
print
(re.findall(
'三(.*)六'
,load1)
)#貪婪匹配
#如果沒有滿足條件的查詢,返回空列表
print
(re.findall(
'九(.*?)一'
,load1)
)#懶惰匹配
print
(re.findall(
'九(.*)一'
,load1)
)#貪婪匹配
#\w 匹配字母,數字,下劃線,n表示連續滿足條件的位數
str3=
'nyrbt'
print
(re.findall(
'\w'
,str3)
)#\w 匹配\w的補集
str3_new=
'ny#$%rbt'
print
(re.findall(
'\w'
,str3_new)
)#\s 匹配空格,換行符\n,製表符\t
str6=
'''從前有座山,
山上有個 廟.
廟裡有倆和 尚,
老和尚講故 事
'''print
(re.findall(
'\s'
,str6)
)#\s \s的補集
print
(re.findall(
'\s'
,str6)
)#^匹配開頭,$匹配結尾
list1=
['abcde'
,'deabc'
,'fabcf'
]for one in list1:
if re.findall(
'^abc'
,one)
:#匹配以abc開頭的字串
print
(one,
'以abc開頭'
)elif re.findall(
'abc$'
,one)
:#匹配以abc結尾的字串
print
(one,
'以abc結尾'
)#re.i 不區分大小寫
req=
'abcabcabcabcabcabc'
print
(re.findall(
'abc'
,req,re.i)
)#re.s 匹配多行中符合條件的值
req2=
'''hellounyrbtyutnhbgumynhbg
,imyuntbuimyuntybr
68,imyuntybrytnuymi,oumworld'''
print
(re.findall(
'hello(.*?)world'
,req2,re.s)
)
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...