【归纳】正则表达式及Python中的正则库

时间:2023-12-25 08:58:55

正则表达式

正则表达式30分钟入门教程
runoob正则式教程
正则表达式练习题集(附答案)

  • 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行
    • 例子:\bhi\b可以用来匹配hi这个单词,且不会匹配到him,china或sushi.
    • 注意\b并不匹配任何字符,它只匹配一个位置
  • 元字符.代表除了换行符以外的任意字符
  • 元字符*代表数量:它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配
    • 另一个指代数量的方式是:{n},这里的n可以填入任何数字,代表前面内容的重复次数,比如两个数字:\d{2}
  • 更多的元字符
  • 使用分枝条件|时,要注意各个条件的顺序,因为匹配分枝条件时,算法将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

一张图速记正则式

【归纳】正则表达式及Python中的正则库

Python中的正则库(re)

re库文档
一些re库的用例

  • 使用match函数来进行正则匹配:re.match(正则式, 要匹配的字符串)
  • 如果匹配成功,match函数将返回一个SRE_Match对象,该对象包含两个方法:
    • group()方法可以输出匹配到的内容
    • span()方法可以输出匹配到的内容在原字符串中的位置范围
  • 使用()可以在匹配到的内容中进一步提取想要的字符串,这些子表达式可通过group(索引)来获得
  • 注意match()方法是从前往后匹配的,如果开头不一致,就得不到匹配结果
  • search()方法在匹配时会扫描整个字符串,所以更适合用来做搜索
  • match和search方法都可以传入第三个参数——修饰符
    • 修饰符re.I:使匹配对大小写不敏感
    • 修饰符re.S:使.(通配符)匹配包括换行符在内的所有字符,这个修饰符在匹配HTML文本时非常常用
  • findall()方法能匹配到符合要求的所有内容,而search()只匹配符合要求的第一个内容
    • findall()的返回结果为列表
  • sub()方法可以用来修改匹配内容:re.sub('匹配内容','替换内容’,目标字符串)
  • compile()方法可以用来封装正则式和修饰符