Python中正则表达式
#字符集和
import re
s ="abc, acc, adc, aec, afc, ahc"
r1 = re.findall('a[cf]c', s)# a开头 c结尾
r2 = re.findall('a[^cf]c', s)# 不是a开头 c结尾
r3 = re.findall('a[c-f]c', s)# 中间是cdef
print(r1)
print(r2)
print(r3)
字符集合打印结果# 概括字符集
# \d 数字
# \D 非数字
# \w 数字+英文字母+下划线
# \W 非单词字符
# \s 空白字符
# \S 非空白字符
import re
a ="python1111java678php_+ \n\t"
rd = re.findall('\d', a)
rD = re.findall('\D', a)
rw = re.findall('\w', a)
rW = re.findall('\W', a)
rs = re.findall('\s', a)
rS = re.findall('\S', a)
print(rd)
print(rD)
print(rw)
print(rW)
print(rs)
print(rS)
概括字符集# 数量词
# * 匹配0次或者无限多次
# + 匹配1次或者无限多次
# ? 匹配0次或者1次 (可以用来去重)
import re
a ="pytho0python1pythonn2"
r1 = re.findall('python*', a)
r2 = re.findall('python+', a)
r3 = re.findall('python?', a)
r4 = re.findall('python{1,2}', a)
r5 = re.findall('python{1,2}?', a)# 左边界的数量1
print(r1)
print(r2)
print(r3)
print(r4)
print(r5)
数量词#边界匹配,检测是否是4-8位
import re
qq ='100000001'
r1 = re.findall('^\d{4,8}', qq)# 左边界
r2 = re.findall('\d{4,8}$', qq)# 右边界
r3 = re.findall('^\d{4,8}$', qq)# 右边界
print(r1)
print(r2)
print(r3)
边界匹配#组别
import re
a ='PythonPythonPythonPython'
r1 = re.findall('(Python)', a)
r2 = re.findall('(Python){3}', a)# Python 重复三次
print(r1)
print(r2)
# 匹配模式 参数 findall的第三个参数
# re.I 匹配忽略大小写
# . 号用来匹配除换行符以外的任意字符,可以用re.S来把\n也包括进去
import re
a ="PythonC#\nJavaPHP"
r = re.findall('c#.', a, re.I | re.S)
print(r)
# 把函数作为参数传递
import re
s ="A8C3721D86"
def convert(value):
matched = value.group()
# print(matched)
if int(matched) >=6:
return '9'
else:
return '0'
r = re.sub('\d', convert, s)
print(r)
# match和search函数,都只会搜索一次
# match 会跟第一个字符比较,没有匹配上就返回none
# search 会一直匹配,直到匹配到,负责返回none
import re
s ="A8C3721D86"
r = re.match('\d', s)
print(r)
r1 = re.search('\d', s)
print(r1.group())