python正则表达式

re模块

pa=re.compile(r'imooc')#生成正则模板对象
ma=pa.match(str)#用模板匹配字符串,返回正则对象
ma.group()#将匹配的结果以字符串形式或元组形式返回
ma.groups()#将匹配结果以元组形式返回
ma.string#被匹配的字符串
ma.span()#被匹配的部分的序列号
pa=re.compile(r'imooc',re.I)#re.I表示大小写不敏感
ma=re.match(r'imooc',str)#不用模板直接生成正则对象

正则表达式语法

  • 匹配单个字符
    .#匹配任意字符
    [...]#匹配字符集中的任意一个字符
    \w#匹配任意一个单词字符[a-zA-Z0-9]
    \W#匹配任意一个非单词字符[^a-zA-Z0-9]
    \d / \D#匹配任意一个数字/非数字字符
    \s / \S#匹配任意一个空白/非空白字符

  • 匹配多个字符
    *#匹配前一个字符0次或无限次
    +#匹配前一个字符1次或无限次
    ?#匹配前一个字符0次或1次
    {m} / {m,n}#匹配前一个字符m次或m到n次

    *? / +? / ??#匹配模式变为非贪婪(尽可能少匹配)

  • 边界匹配
    ^#指定匹配必须出现在字符串的开头或行的开头
    $#指定匹配必须出现在以下位置:字符串结尾、字符串结尾的\n之前或行的结尾。
    \A / \Z#指定的字符串必须出现在开头/结尾

  • 分组匹配
    |#匹配左右任意一个表达式
    (ab)#括号中的表达式作为一个分组
    #引用编号为num的分组匹配到的字符串(重复)
    (?P)#给分组起一个别名
    (?P=name)#引用别名为name的分组匹配字符串(重复)

re模块方法

match#从字符串的开头开始查找匹配(返回正则对象#就是match对象)
search#在字符串中进行查找匹配(返回正则对象)
findall#查找所有匹配的值并返回一个列表
sub#将字符串中匹配正则表达式的部分替换为其他值(返回字符串)
eg:
  str='value=1000'
  re.sub(r'\d+','1001',str)
  >>'value=1001'
其中第二个参数也可以为函数名,则匹配的部分函数处理后的返回结果将替换原来的部分
split#用匹配到的部分来分割字符串,返回一个列表
eg:
  re.split(r':| ','imooc:c c++ python java')
  >>['imooc','c','c++','python','java']

你可能感兴趣的:(python正则表达式)