python中使用正则表达式的方法详解

目录

  • search(pattern, string, flags=0)
  • findall(pattern, string, flags=0)
  • sub(pattern, repl, string, count=0, flags=0)
  • compile(pattern, flags=0)
  • flags的一些常用值
  • 总结
在python中使用正则表达式,主要通过下面的几个方法
【python中使用正则表达式的方法详解】
search(pattern, string, flags=0)
  • 扫描整个string并返回匹配pattern的结果(None或对象)
  • 有匹配的字符串的话返回一个对象(包含符合匹配条件的第一个字符串),否则返回None
import re#导入正则库content = 'Hello 1234567 Hello 666'#要匹配的文本res = 'Hello\s'#正则字符串result = re.search(res, content)if result is not None:print(result.group())#输出匹配得到的字符串 'hello'(返回的得是第一个'hello')print(result.span())#输出输出匹配的范围(匹配到的字符串在原字符串中的位置的范围)res1 = 'Hello\s(\d)(\d+)'result = re.search(res1, content)print(result.group(1))#group(1)表示匹配到的第一个组(即正则字符串中的第一个括号)的内容print(result.group(2))


findall(pattern, string, flags=0)
  • 扫描整个context并返回匹配res的结果(None或列表)
  • 有匹配的字符串的话返回一个列表(符合匹配条件的每个子字符串作为它的一个元素),否则返回None
import reres = 'Hello\s'results = re.findall(res, content)if results is not None:print(results)#输出: ['hello','hello']res1 = 'Hello\s(\d)(\d+)'results = re.findall(res1, content)if result is not None:print(results) # 当正则字符串中出现括号时,所得到列表的每个元素是元组# 每个元组的元素都是依次匹配到的括号内的表达式的结果#输出: [('1','1234567'),('6','666')]


sub(pattern, repl, string, count=0, flags=0)
  • 可以来修改文本
  • 用将用pattern匹配string所得的字符串替换成repl
import recontent = '54aK54yr5oiR54ix5L2g'res = '\d+'content = re.sub(res, '', content)print(content)


compile(pattern, flags=0) 将正则表达式res编译成一个正则对象并返回,以便复用
import recontent1 = '2019-12-15 12:00'content2 = '2019-12-17 12:55'content3 = '2019-12-22 13:21'pattern = re.compile('\d{2}:\d{2}')result1 = re.sub(pattern, '', content1)result2 = re.sub(pattern, '', content2)result3 = re.sub(pattern, '', content3)print(result1, result2, result3)


flags的一些常用值
  • re.I 使匹配对大小写不敏感
  • re.S 使.匹配包括换行符在内的所有字符
import rere.compile(res, re.I)#如果res可以匹配大写字母,那它也可以匹配相应的小写字母,反之也可re.compile(res,re.S)#使res中的'.'字符可以匹配包括换行符在内的所有字符


总结 本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

    推荐阅读