Python 正则表达式核心元字符全解析

正则表达式核心元字符全解析

正则表达式的强大功能源于其元字符(特殊符号),它们赋予模式匹配灵活性和精确性。本文系统梳理常见元字符及其应用场景,附实例详解。


✨ 一、择一匹配(|

管道符号实现逻辑"或"操作,匹配多个模式中的任意一个:

  • at|home → 匹配 athome
  • r2d2|c3po → 匹配 r2d2c3po
  • bat|bet|bit → 匹配 bat/bet/bit
    注意:单字符时 [ab] 等效于 a|b,但多字符需显式用 |(如 ab|cd)。

🔹 二、任意字符匹配(.

点号匹配除换行符 \n 外的任意单个字符:

模式 匹配示例
f.o fao, f9o, f#o
.. AA, ab, 12
转义句点:需用 \. 匹配字面句点(如 www\.google\.com)。

📍 三、边界匹配

定位字符串或单词的起止位置:

符号 功能 示例
^ 匹配字符串开头 ^FromFrom xxx
$ 匹配字符串结尾 /bin/*sh$/bin/bash
\b 单词边界 \bthe\bthe (非 there)
\B 非单词边界 \Bthe\Bthere 中的 the

🧩 四、字符集([]

匹配括号内任意单个字符:

  • b[ae]tbat, bet(不匹配 bt
  • [cr][23][dp][o2]r2d2, c3po

特殊功能:

  • 范围:[a-z](小写字母)、[0-9A-F](十六进制)
  • 排除:[^aeiou] → 非元音字符

🔢 五、频次匹配(闭包操作符)

控制模式出现次数:

符号 含义 示例
* 0次或多次 [dn]ot?do, no, dot, not
+ 1次或多次 [a-z]+\.comgoogle.com
? 0次或1次 goo?glegogle, google
{m,n} m到n次 \d{3,5}123, 98765
非贪婪模式:在闭包符后加 ?(如 .*?)匹配最少字符。

⚡ 六、字符集缩写

简化常见字符集表示:

符号 等效 说明
\d [0-9] 数字
\w [A-Za-z0-9_] 字母数字下划线
\s [\t\n\r\f\v] 空白字符
\D [^0-9] 非数字

示例:

  • \w+-\d+name-123, a-1
  • \d{3}-\d{2}-\d{4} → 社保号格式 123-45-6789

🧠 七、分组提取(()

圆括号实现两大功能:

1. 子模式分组

  • (\d{3})? → 可选3位数字组

2. 捕获匹配内容

  • (\w+)-(\d+) 匹配 name-123 时:
    • 子组1:name
    • 子组2:123
      应用场景:数据提取(如日志分析、文本清洗)。

🚀 八、扩展语法(? 符号)

高级功能标记(不创建分组):

语法 功能
(?i) 忽略大小写
(?:...) 非捕获分组
(?P<name>...) 命名分组(通过名称引用)
示例:
  • (?i)python → 匹配 Python, PYTHON
  • (?P<year>\d{4}) 提取命名为 year 的4位数字

💎 总结

正则表达式元字符是文本处理的瑞士军刀,核心技巧包括:

  1. 边界定位 :用 ^/$ 精确锚定起止位置
  2. 灵活匹配[...] 定义字符集,| 实现逻辑或
  3. 频次控制*/+/?/{} 管理重复次数
  4. 数据提取() 分组捕获关键子串

掌握这些符号的组合应用,可高效解决复杂字符串匹配、验证和提取需求。建议通过实际案例(如邮箱验证、URL解析)加深理解。

相关推荐
程序员小远5 小时前
软件测试之单元测试详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
心无旁骛~6 小时前
python多进程和多线程问题
开发语言·python
星云数灵6 小时前
使用Anaconda管理Python环境:安装与验证Pandas、NumPy、Matplotlib
开发语言·python·数据分析·pandas·教程·环境配置·anaconda
计算机毕设匠心工作室6 小时前
【python大数据毕设实战】青少年抑郁症风险数据分析可视化系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习
后端·python
计算机毕设小月哥6 小时前
【Hadoop+Spark+python毕设】智能制造生产效能分析与可视化系统、计算机毕业设计、包括数据爬取、Spark、数据分析、数据可视化、Hadoop
后端·python·mysql
计算机毕设小月哥8 小时前
【Hadoop+Spark+python毕设】中风患者数据可视化分析系统、计算机毕业设计、包括数据爬取、Spark、数据分析、数据可视化、Hadoop
后端·python·mysql
Keep_Trying_Go8 小时前
基于Zero-Shot的目标计数算法详解(Open-world Text-specified Object Counting)
人工智能·pytorch·python·算法·多模态·目标统计
计算机毕设匠心工作室9 小时前
【python大数据毕设实战】强迫症特征与影响因素数据分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
Trouville0110 小时前
Pycharm软件初始化设置,字体和shell路径如何设置到最舒服
ide·python·pycharm