【编程实践】正则表达式的使用

1 定义

正则表达式(Regular Expression,简称regex或regexp)是一种用于描述、匹配、查找和替换字符串中特定模式的工具。它由普通字符(如a-z)和元字符(如 .、*、+、?、[]、()、^、$、等)组成,形成一套紧凑而强大的规则语言。

1.1 应用范围

正则表达式广泛应用于各类编程语言,文本编辑器、命令行工具(如grep、sed)及数据库系统,典型用于包括:

场景 示例
数据验证 验证邮箱格式、手机号、身份证号等是否符合规范
文本搜索于提取 从日志文件中提取IP、从HTML中抓取<title>\mathrm{<title>}<title>内容
字符串替换 将文档中所有http替换成https

1.2 使用时注意事项

  1. 可读性差
    复杂正则容易编程"一次性代码"
  2. 性能陷阱
  • 回溯爆炸(Catastrophic Backtracking):当使用(a+)+b(a+)+b(a+)+b匹配aaaaaaaaaaacaaaaaaaaaaacaaaaaaaaaaac时可能导致指数级回溯
  • 避免嵌套量词:优先使用非捕获组 (?:...);必要时改用原子组 (?>...) 或占有量词(如 a++)
  1. 上下文依赖性强
  • 同一正则在不同语言/引擎中行为可能不同
  1. 过度使用风险
  • 尽量不使用正则解析HTML/XML/JSON(使用专用解析器)
  • 对结构化数据(如CSV),优先使用 csv 模块而不是正则拆分
  1. 安全问题
  • 用户输入的正则若直接拼接到系统中(如re.compile(user_input)),可能被用于ReDos攻击

2 python中re库示例

2.1 基础元字符与字面量

2.2 量词

2.3 字符组与预定义类

2.4 分组与捕获

2.5 边界与锚点

2.6 工程场景可能使用

  1. 提取 ply文件的点数(头部element vertex N)
  2. 匹配隧道区段编号
  3. 提取混凝土用量
  4. 清理日志时间戳前缀
  5. 文件名标准化
相关推荐
realhuizhu36 分钟前
是猫踩键盘还是乱码?不,这是你刚写的正则表达式
正则表达式·regex·代码质量·开发效率·ai编程助手
聊天QQ:180809514 天前
探索A*、JPS+算法在多机器人与单机器人场景下结合DWA的改进与对比
正则表达式
qq_251533595 天前
如何使用 Python 正则表达式去除空格/制表符/换行符?
开发语言·python·正则表达式
代码续发5 天前
正则表达式小记
正则表达式
GISer_Jing6 天前
Showdown解析策略:正则替换的利与弊
前端·正则表达式
BD_Marathon6 天前
【JavaWeb】JS_了解正则表达式
正则表达式
十一.3667 天前
85-90 正则表达式的简介,正则语法,字符串和正则相关的方法,正则表达式语法
正则表达式
刺客xs7 天前
MySQL数据库----通配符,正则表达式
数据库·mysql·正则表达式
Cherry的跨界思维7 天前
8、Python正则表达式精准搜索实战:从模糊匹配到精准定位
开发语言·python·正则表达式·django·flask·pygame·tornado
云计算老刘10 天前
3.Shell 变量基础知识
chrome·正则表达式·centos·云计算