re正则表达式之一

请教下,re正则表达式之一
最新回答
苏仙小可爱

2026-06-12 06:39:03

这段代码展示了Python中re模块的正则表达式匹配功能,通过不同元字符实现灵活的模式匹配。以下是关键点解析:

1. . 通配符
  • 功能:匹配除换行符外的任意单个字符。
  • 示例:re.findall('^r....y','ruehsyssdfg')

    匹配以r开头、后接任意4个字符(.占位)、再以y结尾的子串。

    结果:['ruehsy'](匹配到ruehsy,后续字符被截断)。

2. ^ 和 $ 锚点
  • ^:匹配字符串开头(需写在模式首位)。示例:re.findall('^r....y','ruehsyssdfg') → 从开头匹配ruehsy。

  • $:匹配字符串结尾(需写在模式末尾)。示例:re.findall('h...y$','sdqwhhsdwy') → 匹配末尾的hsdwy(h后接3字符,以y结尾)。结果:['hsdwy']。

3. 重复匹配元字符*:匹配前导字符 0 次或多次
  • 示例:re.findall('a.*','sadqwererf')

    匹配a后跟任意数量字符(包括空)。

    结果:['adqwererf'](贪婪匹配到字符串末尾)。

+:匹配前导字符 1 次或多次
  • 示例:re.findall('ab+','sabdqbweabbbreabrf')

    匹配a后跟至少1个b。

    结果:['ab', 'abbb', 'ab'](分别匹配ab、abbb、ab)。

?:匹配前导字符 0 次或 1 次
  • 示例:re.findall('ab?','sabdqbweabbbreabrf')

    匹配a后跟0或1个b。

    结果:['ab', 'ab', 'ab'](每个a后最多1个b,如abbb仅匹配前两个字符ab)。

4. 指定重复次数{n,}:至少匹配 n 次
  • 示例:re.findall('ab{3}','sabdqbweabbbreabrf')

    匹配a后跟恰好3个b。

    结果:['abbb'](仅abbb符合)。

{n,m}:匹配 n 到 m 次(贪婪)
  • 示例:re.findall('ab{1,2}','sabdqbweabbbreabrf')

    匹配a后跟1或2个b(优先匹配更多)。

    结果:['ab', 'abb', 'ab'](abbb被拆分为ab和abb)。

5. 总结等价关系
  • * ≡ {0,}
  • + ≡ {1,}
  • ? ≡ {0,1}
关键注意事项
  1. 贪婪匹配:.*、.+ 等会尽可能匹配最长子串(如a.*匹配到末尾)。
  2. 转义字符:若需匹配.、*等元字符本身,需用反斜杠转义(如.)。
  3. 性能:复杂正则可能影响效率,建议用re.compile()预编译模式。

通过灵活组合这些元字符,可以高效处理文本匹配、提取等任务。