正则表达式
字符
- \d: 数字
- \w: 字母
- \t: 制表符
- . : 除回车外所有字符
次数
- *: 大于等于0
- +: 大于等1
- {m}: 次数
- {m,n}: {3,5}从3到5
re.match和re.search
re.match: 给出的字符串起始位置去匹配
re.search: 整个字符串去匹配
例子
import re
result1 = re.match('\d+', 'a123fdsa234f4532')
result2 = re.search('\d+', 'a123fdsa234f4532')
print(result1)
print(result2)
结果
None
<_sre.SRE_Match object; span=(1, 4), match='123'>
上面可看到,如果没有返回None,否则返回一个对象,如果要取到值则为print(result2.group())。
re.findall
一直找到所有相关匹配项(适合一次,100次需要编译一百次)。
例子
result3 = re.findall('\d+','a123fdsa234f4532')
print(result3)
结果
['123', '234', '4532']
re.compile
返回一个对象需要用findall函数获取字符串来匹配(适合多次)。
例子
com = re.compile('\d+')
print(com.findall('a123fdsa234f4532'))
结果
['123', '234', '4532']
re.group和re.groups
- re.group: 获取所有
- re.groups:(只获取组里面(括号里)的匹配值)
例子
result3 = re.search('(\d+)fdsa(\d+)', 'a123fdsa234f4532')
print(result3.group())
print(result3.groups())
结果
123fdsa234
('123', '234')
查找IP
例子
ip = '12.32.123.432.23432fdsa+fds;fdsa192.23.32.44_fdsa#@9ds'
print(re.findall('(?:\d{1,3}\.){3}\d{1,3}', ip))
结果
['12.32.123.432', '192.23.32.44']