正则

正则表达式

字符

  • \d: 数字
  • \w: 字母
  • \t: 制表符
  • . : 除回车外所有字符

次数

  • *: 大于等于0
  • +: 大于等1
  • {m}: 次数
  • {m,n}: {3,5}从3到5

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']