美文网首页
RegExp Cheatsheet

RegExp Cheatsheet

作者: YuboonaZhang | 来源:发表于2019-12-10 10:36 被阅读0次

    正则匹配技巧

    使用python包re

    基本函数

    • re.match(正则表达式, 原字符串) 从最开始匹配,但只匹配一次
    • re.findall(正则表达式, 原字符串) 匹配字符串中所有满足正则表达式的部分
    • re.sub(正则表达式, 替换成什么, 原字符串) 将正则表达式匹配到的部分替换成任意其他

    匹配模式的符号

    1. .匹配除\n之外的所有单字符
    2. *匹配其前方字符的重复多次。

      例如texttexttext*匹配到textt

    3. []中括号内的内容被分成字符,匹配其中的每个字符,字符间无先后,是‘或’的关系。

      例如,[abc]匹配abc

    4. ()中表示一个子表达式,同时可用(|)进行有先后的多选匹配,总是匹配其中最先出现的那个字符。

      例如,(abc|a|b),匹配三者中最先出现的那个。

    5. \标记特殊字符(如换行符\n),或用来显示模式符号的原本含义:\*\(

      例如,为了匹配*,需要使用\*表达式。

    6. ?出现在*、+后时,标记前面的子表达式非贪婪(意思是最小匹配,原文中重复多次,但只会匹配其中第一个)。

      例如a.*?b,只会匹配accbababaacb中的第一个accb

    7. {n}、{n, n+}表示匹配的次数的限制。

      例如(text){2},匹配texttext

    8. ^可以限制正则匹配字符串的开始位置。

      例如^Ab,则匹配字符串AbcAb中的字符串首的Ab,而不能匹配后面出现的Ab

    9. ^[^a-z]中,表示一个取反的正则表达式,匹配a-z以外的所有字符,其中[]的用法,参照第3条。
    10. s='adb00000000acb', ab=re.findall( r'a(.*?)b', s, re.S),匹配表达式中()中的部分。

      例如,从acvbabb中匹配到cv

    11. **高难度用法**:(1号表达式)(2号表达式)(3号表达式),这样用()括号,将不同正则表达式括起来后,对字符串进行匹配后,可以用re.group(1或2或3)单独获取到三个表达式对应匹配到的字符串。(re.group(0)或者不使用group则获取整个全局的正则匹配)
    12. **高难度用法**:python版命名组方法(?P<name>正则表达式) 使用re.group('name'),可以用指定的name匹配某个字符串。

    注意: 网上一些代码类似,reg = /a-zA-z/ 其中 /符号是某些编程语言中,指示一个正则表达式起止的记号

    获得中文和英文标点符号

        from zhon.hanzo import punctuation
        import string.punctuation
    

    相关文章

      网友评论

          本文标题:RegExp Cheatsheet

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