Python正则表达式

正则表达式

  • 用途:对字符串按照某种规则进行检索、替换
基本语法
  • 元字符:

    • .: 可以用来表示除了换行符之外的任一字符
    • [abc]: 字符集,可以用来表示字符集中的任一字符
    • [^abc]: 字符集,表示除了字符集外的任一字符
    • [a-z]: 字符范围,表示a-z范围内的任一字符
    • [^a-z]: 字符范围,表示除了a-z之外的任一字符
    • \d: 表示0-9范围内的任一数字,==[0-9]
    • \D: 表示除了0-9之外的任一字符,==[^0-9]
    • \s: 表示所有的空白字符
    • \S: 表示除了空白字符外的任一字符
    • \w: ==[a-zA-Z0-9_]
    • \W: ==[^a-zA-Z0-9_]
    • \b: 表示匹配单词的边界
    • \B: 表示不匹配单词的边界
    • ^: 表示字符串的行首
    • $: 表示字符串的行尾
  • 注意:如果在正则表达式中有特殊意义,在使用时需要使用转义符

  • 字符重复

    • *: 表示前面的字符可以重复至少0次
    • +: 表示前面的字符可以重复至少1次
    • ?: 表示前面的字符可以重复0次或者1次
    • {n}: 表示前面的字符重复n次
    • {n,}: 表示前面的字符重复至少n次
    • {m,n}: 前面的字符重复次数区间为:[m,n]
  • 注意:字符的重复是指模式的重复

  • 分组与断言

    • x|y: 表示匹配x或者y
    • (pattern): 表示一个分组,自动按顺序给编号
    • \num: 表示引用标号为num的分组(引用内容不是模式)
    • (?:pattern): 取消分组,表示括号用于指定优先级
    • (?pattern): 命名分组,python中使用(?Ppattern)
    • f(?=pattern): 表示在f后一定有pattern
    • (?<=pattern)f: 表示在f前一定有pattern
    • f(?!pattern): 表示在f后一定没有pattern字符
    • (?: 表示在f前一定没有pattern字符
  • 注意:断言不是分组,不占用分组号,相当于一个判定条件

  • 引擎选项

    • re.I: 表示忽略大小写
    • re.M: 表示多行模式
    • re.S: 表示单行模式
    • re.X: 表示忽略表达式中的空白符
  • 注意:单行模式时,'.'符号可以匹配所有字符(包括换行符)

你可能感兴趣的:(Python正则表达式)