zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python re 正则表达式库的使用

2023-09-27 14:27:29 时间
	.         	匹配任何字符,除了\n,占位符
    *           匹配前一个字符0次或无限次
    +           匹配前一个字符1次或无限次
    ?           匹配前一个字符0次或1次
    .*          贪心算法
    .*?         非贪心算法
    ()          括号内的数据作为结果返回
    (\d+)       匹配纯数字
    []          对单个字符给出取值范围,    [abc]:a.b.c    [a-z]:a到z字符
    [^]         对单个字符排除范围,        [^abc]:非a或b或c
    |           或,                      abc|def:abc或def
    {m}         扩展前一个字符m次,         ab{2}c:abbc
    ^           匹配字符串开头
    $           匹配字符串结尾
    \d          数字,等价于[0-9]

2.正则表达式常用方法

findall:匹配符合规则的内容,返回结果的列表

search: 匹配并提取第一个符合规则的内容,返回一个正则表达式对象(object)
         .group(2)   取第二个
         匹配一个内容时,用search,提高效率

sub:    替换符合规律的内容,返回替换后的值
         re.sub("xx(.*?)xx","替换为该内容", 原字符串)

3.列子

a = "xuufhxxixxaasfasxxlovexxasdasdaxxyouxxasdasa"

print(re.findall("xx.*xx", a))
    >>>['xxixxaasfasxxlovexxasdasdaxxyouxx']

print(re.findall("xx.*?xx", a))
    >>>['xxixx', 'xxlovexx', 'xxyouxx']

print(re.findall("xx(.*?)xx", a))
    >>>['i', 'love', 'you']
  1. re.S的使用

      a = """xuufhxxixxaasfasxx
         lovexxasdasdaxxyouxxasdasa"""
    
      print(re.findall("xx(.*?)xx", a, re.S))
     >>>['i', 'love', 'you']
    
     作用:使‘.’号匹配换行符(\n)
     扩展:  re.I   忽略大小写
        	re.M   ^字符能将每行当作字符串匹配开始
    

5.当表达式有特殊符号时,用r转义

r('正则表达式')

6.正则表达式的两种使用方法

# 一次操作
a = re.search(r'xxx', str)

# 正则表达式需要多次使用
b = re.compile(r'xxx')
a = b.search(str)