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

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. 文件名标准化
相关推荐
长城20245 天前
HTML5中表单的pattern属性解析
前端·正则表达式·html·html5·pattern·pattern属性·pattern正则表达式
Gss7775 天前
Linux 正则表达式详解(基础 + 扩展 + 实操)
linux·运维·正则表达式
黑客思维者5 天前
正则表达式(九)网络安全:检测SQL注入攻击 + 检测XSS跨站脚本 + 扫描敏感信息泄露 + 匹配暴力破解异常IP
sql·web安全·正则表达式
黎雁·泠崖5 天前
Java常用类核心详解(七):正则表达式 Regex 从入门到实战
java·开发语言·正则表达式
秀儿还能再秀5 天前
正则表达式核心语法 + Python的 re 库中常用方法
python·正则表达式
xcLeigh5 天前
Python入门:Python3 正则表达式全面学习教程
python·学习·正则表达式·教程·python3
数据知道6 天前
MongoDB 正则表达式查询:在 MongoDB 中实现模糊搜索与索引优化陷阱
数据库·mongodb·正则表达式
A懿轩A6 天前
【Java 基础编程】Java 正则表达式实战:Pattern/Matcher、元字符与常用正则,验证与提取必备
java·开发语言·正则表达式
石牌桥网管6 天前
正则表达式:匹配不包含指定字符串的文本
java·javascript·python·正则表达式·go·php