python 正则表达式

r'[\u4e00-\u9fa5]汉字

.匹配除换行符外的任意字符

\d匹配所有数字 ,与[0-9]相同[0123456789]

\D匹配非数字字符,[^0-9]

\w匹配数字,字母,下划线[0-9a-zA-Z_]

\W匹配非数字 字线 下划线[^0-9A-Za-z]

\s匹配任意空白符(空格  换行 换页符 制表符 回车,同[  \f\n\r\t]
\S匹配任意非空白符(空格  换行 换页符 制表符 回车,同[^  \f\n\r\t]

^行首匹配
$行尾匹配
\A 匹配字符串开始,只匹配整个字符串的开头.与^区别:即使与re.M配合也只能匹配当前行行首,不会匹配其他行的行首

\Z匹配字符串结束,只匹配整个字符串的结束.与$区别:即使与re.M配合也只能匹配当前行行尾,不会匹配其他行的行尾

>>> print(re.search(r"\AI","I'm a never"))

>>> print(re.search(r"I\Z","I'm a never"))
None
>>> print(re.search(r"r\Z","I'm a never"))

>>>

\b匹配一个单词的边界,就是单词和空格间的位置

\B匹配非单词的边界

>>> print(re.search(r'er\b',"never"))

>>> print(re.search(r'er\B',"never"))
None
>>>

(abc)匹配abc这三个字符组合串

(abc)?匹配0个或1个abc

(abc)*匹配0个或任意多个abc

.*匹配0个或任意个字符(换行符除外)

(abc)+匹配至少一个abc

(abc){2,5}匹配2或3或4或5个abc

 

import re
aa="this di  df    er   dman man"
print(re.split(r" +",aa))上

上面的代码是用正则分割字符
结果:

===================== RESTART: D:/Python/Python37/re2.py =====================
['this', 'di', 'df', 'er', 'dman', 'man']
>>>

 

import re
aa=r'[0-9a-zA-Z_]'#匹配任意一个数字字母或下划线
print(re.search(aa,"dsfs345355"))
rr="i an dfef fgdei fdfeffd"
rra=re.finditer(r'fe',rr) #与findall类似,查找整个字符串,但不将结果一次性放到内存中,而返回一个迭代器
for i in rra:   #用循环返回结果
    print(i.group())
print(".........")
rra=re.finditer(r'df',rr)
while True:   #利用循环与next结合返回结果
    try:
        ia=next(rra)  #迭代器用next返回
        print(ia.group())
    except StopIteration as e:
        break上

上面的代码是finditer:查找到的每个结果,用其group()返回其具体结果值
findall 返回一个包含所有匹配到的字符的列表,列表类以元组的形式存在。
finditer 返回一个可迭代对象。
结果:

===================== RESTART: D:\Python\Python37\re1.py =====================

fe
fe
.........
df
df
>>>

 

import re
aa=r'[0-9a-zA-Z_]'#匹配任意一个数字字母或下划线
print(re.search(aa,"dsfs345355"))
rr="i an dfef fgdei fdfeffd"
#sub subn:在目标字符串中以正则表达式的规则匹配字符串,再把其替换成指定的字符串,可以指定替换次数。如果不指定默认替换所有符合目标对象
#sub直接返回替换后的结果;subn:返回元组:替换后的结果,替换的次数
rrb=re.sub(r'df',"gg",rr)
rrbb=re.subn(r'df',"gg",rr)
print(rrb)
print(rrbb)
print("..............")
strb="sunck is a go0534-3456776od man!sunck is 020-45343422a nice man! sunk is good man 010-53247654"
stra="010-33434344"
m=re.match(r"(\d{3})-(\d{8})",stra)  #match从最左边匹配
print(m)
print(m.group(0))
print(m.group(1))
print(m.group(2))
print(">>>>>>>>>>>>")
ma=re.findall(r"(\d{3}-\d{8})",strb)
mab=re.findall(r"(\d{4}-\d{7})",strb)
maa=re.findall(r"((\d{3}-\d{8})|(\d{4}-\d{7}))",strb)
print(ma)
print(maa)
print(mab)   

 结果:

===================== RESTART: D:\Python\Python37\re1.py =====================

i an ggef fgdei fggeffd
('i an ggef fgdei fggeffd', 2)
..............

010-33434344
010
33434344
>>>>>>>>>>>>
['020-45343422', '010-53247654']
[('0534-3456776', '', '0534-3456776'), ('020-45343422', '020-45343422', ''), ('010-53247654', '010-53247654', '')]
['0534-3456776']
>>>

 

dd='''sdxxhello
xxfsdfxxworldxxasdf'''
d=re.findall('xx(.*?)xx',dd)
print(d)
d=re.findall('xx(.*?)xx',dd,re.S) #re.S表示跨行匹配,没有则不跨行
print(d)

结果:

['fsdf']
['hello\n', 'world']
>>>

 


re.match(r'.',"abvd")  #匹配最左边开始的字符

re.search(r'.',"abdd") #匹配整个字符串中第一个符合条件的字符

re.findall(r'.',"abcd") #匹配整个字符串中所有符合条件的字符

你可能感兴趣的:(python 正则表达式)