基础应用
正则表达式,快速检索文本、实现一些替换文本的操作。
正则表达式由一系列普通字符和一系列元字符组成。
‘\d’ 表示0~9这是个数字,是元字符
‘\w’ 表示单词字符,即0-9,A-Z,a-z以及下划线这些字符
‘\s’ 表示空白字符
‘. ’ 表示匹配除换行符\n之外其他所有字符
import re
a = 'C0C++7Java6C#4Python8Javascript'
r = re.findall('\d',a)
print(len(r))
print(r)
输出:
字符集
寻找acd和asd
import re
a = 'abc,acd,aks,asd,wed,asd'
r = re.findall('a[cs]d',a)
print(len(r))
print(r)
输出:
从c到h的字母可以用c-h
可以使用{n}来表示数量集趋向于尽可能匹配长字符串,是贪婪的
import re
a = 'abc,acd1 d32,132132aaksdd,132asd,wed,aSd'
r = re.findall('[a-z]{3,6}',a)
print(r)
输出:
非贪婪应使用:
'[a-z]{3,6}?'
数量词
加*号,表示字符串最后一个字母匹配0次到无限多次
加+号,表示字符串最后一个字母匹配1次到无限多次
加?号,表示字符串最后一个字母匹配0次或1次
import re
a = 'pytho0python1pythonn2'
r = re.findall('python*',a)
print(r)
输出:
边界匹配
^表示从开头第一个字符开始匹配,$表示从字符串最后开始匹配
import re
a = '1234567'
r = re.findall('^\d{3,7}$',a)
print(r)
输出:
匹配模式
re.I忽略大小写
re.S允许 ’.‘ 匹配所有字符包括换行符\n
r = re.findall('\s', str, re.I)
函数
re.sub
import re
a = 'PythonC#JavaC#PHPC#'
def convert(value):
matched = value.group()
return '!!' + matched + '!!'
r = re.sub('C#',convert,a)
print(r)
输出:
re.match和re.search
re.search会搜素整个字符串,一旦找到结果就会返回结果
re.match从首字母开始匹配,如果首字母满足就返回结果
import re
a = 'BB5ASD5S8SD4C'
r = re.match('\d',a)
print(r)
r1 = re.search('\d',a)
print(r1)
输出:
如果找到,输出都为一个对象
使用r.span()和r.group()来获取span值和match值
import re
a = 'life is short, i use python'
r = re.search('life(.*)python',a)
print(r.group(1))
r1 = re.findall('life(.*)python',a)
print(r1)
输出:
group的使用:
import re
a = 'life is short, i use python, because i love python'
r = re.search('life(.*)python,(.*)python',a)
print(r.group(0))
print(r.group(1))
print(r.group(2))
print(r.groups())
输出: