RegExp Cheatsheet

正则匹配技巧

使用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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类 !/usr/bin/python -- coding: UTF-8 -- class Employee:'所有...
    SkTj阅读 992评论 0 0
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,175评论 0 9
  • 1.正则基本符号 1.什么是正则表达式正则表达式就是字符匹配工具;是由正则符号和普通字符组成,来匹配不同规律的字符...
    杨海py阅读 804评论 0 0
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 623评论 0 2
  • re模块手册 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以...
    喜欢吃栗子阅读 4,050评论 0 13