美文网首页
python 正则表达式 regex

python 正则表达式 regex

作者: 我的随笔 | 来源:发表于2021-06-13 12:27 被阅读0次

    正则表达式对于字符串的处理非常高效

    • 简单的使用如下:
    1. import re 导入正则表达式模块

      • python所有正则表达式的函数都在re模块中
    2. re.compile()创建一个Regex对象

    3. Regex对象的search() 方法查找传入的字符串:

      • 如果字符串中没有找到该正则表达式的匹配,那么search()将返回None
      • 如果找到了,将返回一个Match对象
    4. 调用Match对象的group()方法返回匹配的字符串

    举个电话号码查询的例子

    #导入re模块
    import re
    
    #创建匹配电话号码的正则表达式对象 `phoneNumRegex `
    phoneNumRegex = re.compile(r'\d\d\d-\d\d\d\d\d\d\d')
    
    mo = phoneNumRegex .search('My number is 010-12345678')
    if mo is not None:
      print('Number is:' + mo.group())
    else:
      print('Not found!')
    
    • 匹配模式:
    符号 意义
    \d 表示一个数字字符,即任何一个0到9的数字
    \D 除0到9的数字以外的任何数字
    \w 任何字母、数字或下划线字符(‘单词word’)
    \W 除字母、数字或下划线以外的任何字符
    \s 空格、制表符或换行符(‘空白space’)
    \S 除空格、制表符或换行符以外的任何字符
    . 句点(通配符),匹配除了换行符以外的所有字符
    • 更多匹配方法:

    用括号分组 ()

    用管道匹配多个分组 |

    用问号实现可以选匹配 ?
    匹配这个问号之前的分组0次或者1次

    用加号实现多次匹配 +
    匹配这个问号之前的分组1次或者多次

    用星号实现任意次匹配 *
    匹配这个问号之前的分组0次或者多次

    用花括号实现指定次数匹配 {}
    匹配这个问号之前的分组特定次数

    花括号默认为贪心匹配,即匹配最长的字符串
    非贪心匹配需要在花括号后添加问号,{}?

    {n}匹配n次前面的分组。
    {n,}匹配n次或更多前面的分组。
    {,m}匹配零次到m次前面的分组。
    {n,m}匹配至少n次、至多m次前面的分组。
    {n,m}?或*?或+?对前面的分组进行非贪心匹配。

    Carrots(caret) cost dollars.
    插入字符 ^ 匹配开始
    ^spam表示字符串必须以spam开始
    美元字符 匹配结尾 spam表示字符串必须以spam结束

    [abc]匹配方括号内的任意字符(诸如a、b或c)。
    [^abc]匹配不在方括号内的任意字符。

    Regex对象的findall() 方法

    相关文章

      网友评论

          本文标题:python 正则表达式 regex

          本文链接:https://www.haomeiwen.com/subject/qcoveltx.html