re模組用於對python的正規表示式的操作。
字元:. 匹配除換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
次數:* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
重複n次
重複n次或更多次
重複n到m次
ip:1、match(pattern, string, flags=0)^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d))$
手機號:
^1[3|4|5|8][0-9]\d$
從起始位置開始根據模型去字串中匹配指定內容,匹配單個
importreobj = re.match('
\d+', '
123uuasf')
ifobj:
print obj.group()
#2、search(pattern, string, flags=0)flags
i = ignorecase = sre_compile.sre_flag_ignorecase #
ignore case
l = locale = sre_compile.sre_flag_locale #
assume current 8-bit locale
u = unicode = sre_compile.sre_flag_unicode #
assume unicode locale
m = multiline = sre_compile.sre_flag_multiline #
make anchors look for newline
s = dotall = sre_compile.sre_flag_dotall #
make dot match newline
x = verbose = sre_compile.sre_flag_verbose #
ignore whitespace and comments
根據模型去字串中匹配指定內容,匹配單個
import3、group和groupsreobj = re.search('
\d+', '
u123uu888asf')
ifobj:
print obj.group()
a = "4、findall(pattern, string, flags=0)123abc456
"print re.search("
([0-9]*)([a-z]*)([0-9]*)
", a).group()
print re.search("
([0-9]*)([a-z]*)([0-9]*)
", a).group(0)
print re.search("
([0-9]*)([a-z]*)([0-9]*)
", a).group(1)
print re.search("
([0-9]*)([a-z]*)([0-9]*)
", a).group(2)
print re.search("
([0-9]*)([a-z]*)([0-9]*)
", a).groups()
上述兩中方式均用於匹配單值,即:只能匹配字串中的乙個,如果想要匹配到字串中所有符合條件的元素,則需要使用 findall。
import5、sub(pattern, repl, string, count=0, flags=0)reobj = re.findall('
\d+', 'fa
123uu888asf')
print obj
用於替換匹配的字串
content = "相比於str.replace功能更加強大123abc456
"new_content = re.sub('
\d+', 'sb'
, content)
#new_content = re.sub('\d+', 'sb', content, 1)
print new_content
6、split(pattern, string, maxsplit=0, flags=0)
根據指定匹配進行分組
content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'
"new_content = re.split('\*'
, content)
#new_content = re.split('\*', content, 1)
print new_content
content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'
"new_content = re.split('
[\+\-\*\/]+
', content)
#new_content = re.split('\*', content, 1)
print new_content
inpp = '相比於str.split更加強大1-2*((60-30 +(-40-5)*(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2))
'inpp = re.sub('
\s*',''
,inpp)
new_content = re.split('
\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+)\)
', inpp, 1)
print new_content
7、分組匹配位址
匹配ip位址aaa
="111,222,333"
bbb =re
.search(r
'(\d+,)(\d+),(\d+)'
,aaa
)
(bbb
.group(1
))
(bbb
.group(2
))
(bbb
.group(3
))
111
,
222
333
re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none;而re.search匹配整個字串,直到找到乙個匹配。str
="192.168.1.1"
m =re
.match
("([0-9]\.?)"
,str
).group
()
print(m
)
192.168
.1.1
其它例子,匹配除了某某之外的
來自為知筆記(wiz)aaa
="www.m.biyao.com"
bbb =re
.search
("[^\.]+\."
,aaa
).group
()
# 會匹配出 www. 因為規則是匹配除了.之外的乙個或多個值加上乙個.
bbb =re
.search
("[^b]+"
,aaa
).group
()
# 會匹配出 www.m. 因為規則是匹配除了b之外的乙個或多個值.
(bbb
)
正規表示式 RE
最近一段時間在研究nginx的rewirte重寫機制,因此對re需要有一定的了解,看了想關的文章,因此自己來寫一篇類似總結性的的文章。基本來說,正規表示式是一種用來描述一定數量文字的模式。regex regular express。本文用 regex 來表示一段具體的正規表示式。一段文字就是最基本的...
re正規表示式
1.數字 0 9 2.n位的數字 d 3.至少n位的數字 d 4.m n位的數字 d 5.零和非零開頭的數字 0 1 9 0 9 6.非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7.帶1 2位小數的正數或負數 d d 8.正數 負數 和小數 d d 9.有兩位小數的正實數 0 9 0 9...
Re正規表示式
import re 匯入re模組 重複出現的字串 對於重複出現的字串可以用大括號內部加上重複次數的方式表達 r d 分組 使用小括號分組 r d d 重複出現的字串 對於重複出現的字串可以用大括號內部加上重複次數的方式表達 r d 重複出現的字串 對於重複出現的字串可以用大括號內部加上重複次數的方式...