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

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. 文件名标准化
相关推荐
互联网中的一颗神经元2 天前
小白python入门 - 23. Python 正则表达式的应用
python·正则表达式
2501_936415692 天前
API-正则表达式&时间&包装类
正则表达式
鹤卿1235 天前
谓词与正则表达式(OC)
ios·正则表达式·objective-c·xcode
饼干哥哥9 天前
10.5% 深层转化、90%+ 新用户,ChatGPT Ads 值得吗?
算法·正则表达式·编程语言
饼干哥哥9 天前
Seedance TK视频「真人感」问题的 9 个解法
正则表达式·代码规范·设计
逝水无殇10 天前
C# 正则表达式详解
开发语言·后端·正则表达式·c#
木木子2215 天前
# 密码强度检测深度解析:正则表达式实时分析、多维度评分算法与可视化反馈
mysql·算法·华为·正则表达式·harmonyos
饼干哥哥15 天前
用Claude Code跑通跨境电商的5大场景,顶10个人的团队
人工智能·设计模式·正则表达式
饼干哥哥16 天前
单篇100万阅读文章,如何用AI 做好内容创作?
人工智能·正则表达式·代码规范
无足鸟ICT18 天前
【RHCA+】扩展正则表达式
linux·正则表达式