当前位置:   article > 正文

python 正则表达式及其规则_python3.9 正则表达式规范

python3.9 正则表达式规范

1定义:

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

2正则规则

  • 单个字符:

普通字符:简单来说就是一对一的完全匹配

[]:匹配【】中的任意一个字符

[a-z]:匹配a~z之间的字符(所有消息字母)

[0-9]:匹配0~9之间的字符(所有数字)

[A-Z0-9]:匹配所有的大写字母和数字

[^abc]:匹配除abc外的所有字符,^代表非

. :点,匹配除'\n'换行符以外的任意字符

\d:匹配所有的数字,等价于[0-9]

\D:匹配所有的非数字,等价于[^0-9]

\w:匹配所有的数字、字母(中文)、下划线任意字符

\W:匹配所有的非字符的字符(\w的取反)

\s:匹配所有的空白符(\n、\t、\t、空格等)

\S:匹配所有的非空白符

\b:匹配单词,以标点、空格分割单词 ,使用的时候需要用r转义

\B:非词边界匹配

  • 次数控制

():将小括号内的内容当做一组数据一个整体去处理去匹配

*:前面的字符出现任意次

+:前面的字符出现至少一次

?:前面的字符出现至多一次

{m}:指定次数,m表示出现的次数

{m,}:至少指定次数

{m,n}:指定范围内的次数,m到n次之间

{,n}:至多n次,相当于{0,n}

正则的匹配默认都是贪婪的(最大限度的匹配)

  • 边界限定
    • ^:以指定的内容开头
    • $:以指定的内容结尾
    • \A只能匹配整个字符串的开头,不支持re.M
    • \Z只能匹配字符串的结尾,不支持re.M
  • 优先级控制

  • |:表示或,它拥有最低的优先级
  • ():用于表示一个整体,明确的指定优先级
  • 示例:
  • import re

    c = re.compile(r'a(hello|world)b')

    s = c.search('aworldb')

    if s:

    print(s.group())

    分组匹配

  • 说明:()不但可以作为一个整体,还可以进行分组匹配
  • 示例1:
  •  

    import re​

    c = re.compile(r'(\d+)([a-z]+)(\d+)')

    s = c.search('shd327sjahdajhsd87892ehawksd')​

    if s:

       print(s.group())

       # 默认就是全部的匹配内容,等价于上式

       print(s.group(0))

       # 第一个()匹配到的内容

       print(s.group(1))

       print(s.group(2))

       print(s.group(3))

       print(s.span())

       print(s.span(0))

       print(s.span(1))

       print(s.span(2))

       print(s.span(3))

    贪婪匹配

  • 贪婪:最大限度的匹配叫贪婪。正则的匹配默认是贪婪。
  • 非贪婪:只要满足匹配条件,能少匹配就少匹配;通过可以使用'?'进行取消贪婪
  • 示例:
  • import re

    # 取消任意多次的贪婪

    # c = re.compile(r'a.*?b')

    # 取消至少一次的贪婪

    c = re.compile(r'a.+?b')

    s = c.search('abdhsadjbsdjabs')

    if s:

    print(s.group())

    匹配模式

  • 说明:所谓模式就是对匹配的原则进行整体的修饰
  • 示例:
  • import re

    # 忽略大小写的匹配

    # c = re.compile(r'hello', re.I)

    # s = c.search('Hello world')

    # 进行多行匹配,默认单行匹配

    # c = re.compile(r'^hello', re.M)

    # s = c.search('world \nhello')

    # 做为单行处理 或 让 . 能够匹配 \n

    c = re.compile(r'<div>.*?</div>', re.S)

    # string = '<div>hello</div>'

    string = '''<div>

    hello

    </div>'''

    s = c.search(string)

    if s:

    print(s.group())

    字符转义

  • 若匹配正则语法中的特定字符都需要进行转义
  • 正则字符串会被处理两次,python中处理一次,re模块会在处理一次
  • 若不想考虑字符的转义问题,可以在书写正则字符串时前面加一个字符'r'
  • 添加'r'之后,在python不会再进行任何转义,只需在与正则语法相关的字符前加'\'即可让其使用原有意义

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/113707
推荐阅读
相关标签
  

闽ICP备14008679号