python笔记--正则表达式(1)

第一个正则表达式:

  • 正则表达式是包含文本和特殊字符的字符串,该字符串描述一个可以识别各 种字符串的模式。

    • 上面第一个正则表达式模式是“foo”,该模式没有使用任何特殊字符进行匹配其他字符,所以能够匹配此模式的只有foo字符串,同理,Python和abc123一样。

特殊符号与字符

  • 常见的正则表达式的特殊符号与字符:

  • 创建字符集:

    • 怎样才能匹配句点(dot)或者句号(period)字符?
    • 要显式匹配一个句点符号本身,必须使用反斜线转义句点符号的功能,例如“.”。
    • 尽管句号可以匹配任意符号,但某些时候想要匹配特定的字符,于是可以使用方括号。

    • 关于[cr][23][dp][o2]这个正则表达式有一点需要说明:如果仅允许 “r2d2”或者“c3po” 作为有效字符串,就需要更严格限定的正则表达式。因为方括号仅仅表示逻辑或的功能, 所以使用方括号并不能实现这一限定要求。唯一的方案就是使用择一匹配,例如, r2d2|c3p 。
  • 限定与否定:

    • 方括号中两个符号中间用连接字符(-)连接,用于指定一个字符的范围.
    • 如果脱字符(^)紧跟在左方括号后面,这个符号就表示不匹配给定字符集中的任何一个字符。

  • 使用闭包操作符实现存在性和频数匹配
    • 星号或者星号操作符(*)将匹配其左边的正则表达式出现零次或者多次的情况(在计算机编程语言和编译原理中,该操作称为Kleene闭包)
    • 加号(+)操作符将匹配一次或者多次出现的正则表达式(也叫正闭包操作符)
    • 问号(?)操作符将匹配零次或者依次出现的正则表达式
    • 大括号({}),里面或者是单个值,将最终精确地匹配前面的正则表达式 N 次(如果是{N})或者一定范围的次数。,{M,N}将匹配 M~N 次出现。
    • “尽可能少的次数”是什么意思?当模式匹配使用分组操作符时,正则表达式引擎将试图 “吸收”匹配该模式的尽可能多的字符。这通常被叫做贪婪匹配。

  • 使用圆括号指定分组 :
    • 目的:
      • 匹配模式的子字符串可以保存起来供后续使用。 这些子组能够被同一次的匹配或者搜索重复调用,或者提取出来用于后续处理。
      • 对正则表达式进行分组;
      • 匹配子组。