python模块--re的详细使用

一.常用正则表达式符号和语法:

  • ‘.’ 匹配所有字符串,除\n以外
print(re.findall(".","Hello World"))
  • ‘-’ 表示范围[0-9]
  • ‘*’ 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。
  • ‘+’ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +
  • ‘^’ 匹配字符串开头
  • ‘$’ 匹配字符串结尾 re
  • ‘’ 转义字符, 使后一个字符改变原来的意思,如果字符串中有字符*需要匹配,可以 或者字符集[]
  re.findall(r'3\*','3*ds')['3*']
  • ‘*’ 匹配前面的字符0次或多次
re.findall("ab*","cabc3abcbbac")结果:['ab', 'ab', 'a']
  • ‘?’ 匹配前一个字符串0次或1次
re.findall('ab?','abcabcabcadf')结果['ab', 'ab','ab', 'a']
  • ‘{m}’ 匹配前一个字符m次
re.findall('cb{1}','bchbchcbfbcbb')结果['cb', 'cb']
  • ‘{n,m}’ 匹配前一个字符n到m次
 re.findall('cb{2,3}','bchbchcbfbcbb')结果['cbb']
  • ‘\d’ 匹配数字,等于[0-9]
re.findall('\d','电话:10086')结果['1', '0', '0', '8', '6']
  • ‘\D’ 匹配非数字,等于[^0-9]
re.findall('\D','电话:10086')结果['电', '话', ':']
  • ‘\w’ 匹配字母和数字,等于[A-Za-z0-9]
re.findall('\w','alex123,./;;;')结果['a', 'l', 'e', 'x', '1', '2', '3']
  • ‘\W’ 匹配非英文字母和数字,等于[^A-Za-z0-9]
re.findall('\W','alex123,./;;;')结果[',', '.', '/', ';', ';', ';']
  • ‘\s’ 匹配空白字符
 re.findall('\s','3*ds \t\n')结果[' ', '\t', '\n']
  • ‘\S’ 匹配非空白字符
re.findall('\s','3*ds \t\n')结果['3', '*', 'd', 's']
  • ‘\A’ 匹配字符串开头
  • ‘\Z’ 匹配字符串结尾
  • ‘\b’ 匹配单词的词首和词尾,单词被定义为一个字母数字序列,因此词尾是用空白符或非字母数字符来表示的
  • ‘\B’ 与\b相反,只在当前位置不在单词边界时匹配
  • ‘(?P…)’ 分组,除了原有编号外在指定一个额外的别名
 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{8})","371481199306143242").groupdict("city")
   结果{'province': '3714', 'city': '81', 'birthday': '19930614'}
  • [] 是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者号。

二.常用的re函数:

方法/属性/作用

  • re.match(pattern, string, flags=0)
    从字符串的起始位置匹配,如果起始位置匹配不成功的话,match()就返回none
print(re.match("H","Hello World").span())
print(re.match("H","Hello World"))
  • re.search(pattern, string, flags=0) 扫描整个字符串并返回第一个成功的匹配
print(re.search("o","Hello World"))
  • re.findall(pattern, string, flags=0) 找到RE匹配的所有字符串,并把他们作为一个列表返回
print(re.findall("o","Hello World"))
  • re.finditer(pattern, string, flags=0) 找到RE匹配的所有字符串,并把他们作为一个迭代器返回
x = re.finditer(r"(o)","Hello World")
print(x)
print('------------------------------------')
while True:
    try:
        y = next(x)
        print(x)
    except StopIteration as a:
        break
  • re.sub(pattern, repl, string, count=0, flags=0) 替换匹配到的字符串
x = re.sub(r"(World)","China","Hello World")
print(x)
print(type(x))   #str
  • re.subn(pattern, repl, string, count=0, flags=0) 替换匹配到的字符串并返回替换个数
x = re.subn(r"(World)","China","Hello World")
print(x)
print(type(x)) #tuple

flags:标志位,用于控制正则表达式的匹配方式,值如下

  • re.I 忽略大小写
  • re.L 做本地户识别
  • re.M 多行匹配,影响^和$
  • re.S 是.匹配包括换行符在内的所有字符
  • re.U 根据Unicode字符集解析字符,影响\w \W \b \B
  • re.X 使我们以更灵活的格式理解正则表达式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值