正则表达式大全

50 00

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

所在地:
韩国
收录时间:
2025-11-17
正则表达式大全正则表达式大全

正则表达式实战指南:从基础到精通,字符串匹配效率翻倍!

正则表达式(regular expression)是定义字符串匹配模式的高效工具,能快速实现子串检查、批量替换、精准提取等功能,广泛应用于编程开发、数据处理、办公自动化等场景,是提升字符串处理效率的核心利器。

一、正则表达式核心价值:为什么它是必备技能?

  • 批量处理省时间:替代重复手动操作,几秒完成海量字符串筛选、修改,效率提升 10 倍以上。
  • 跨场景通用:支持 Python、Java、JavaScript 等所有主流编程语言,以及 Excel、Notepad++、VS Code 等工具,一处学会多处复用。
  • 精准匹配无误差:可定义复杂匹配规则,从杂乱文本中精准抓取目标信息,避免遗漏或误判。
  • 轻量化易实现:无需复杂代码,一行正则即可搞定复杂需求,简化开发与办公流程。

二、基础语法速记:3 分钟掌握核心规则

无需死记硬背,记住以下核心语法,就能应对 80% 的日常场景:

1. 匹配符:定义匹配内容

  • 普通字符:直接匹配自身(如test匹配字符串中的 “test”)。
  • 元字符:.匹配任意单个字符(除换行);*匹配前一个字符 0 次或多次;+匹配前 1 次或多次;?匹配 0 次或 1 次。
  • 范围匹配:[a-z]匹配小写字母;[0-9](等价\d)匹配数字;[A-Za-z0-9_](等价\w)匹配字母、数字和下划线。
  • 位置匹配:^匹配字符串开头;$匹配结尾;\b匹配单词边界。

2. 分组与量词:组合复杂规则

  • 分组:()将多个字符视为整体(如(ab){2}匹配 “abab”)。
  • 转义:特殊字符前加\(如\.匹配小数点,\*匹配星号)。
  • 量词:{n}匹配 n 次;{n,}至少 n 次;{n,m}n 到 m 次。

3. 常用语法对照表

语法作用示例
\d匹配数字\d{3}匹配 3 个连续数字
\s匹配空白字符(空格 / 制表符)\s+匹配 1 个以上空白
[^abc]匹配非 a、b、c 的字符[^0-9]匹配非数字
``或逻辑`ab` 匹配 a 或 b

三、3 大核心用途:实战实例 + 直接套用

1. 匹配验证:检查字符串是否符合规则

核心作用:格式校验、子串存在性判断,避免无效数据。
  • 实例 1:验证手机号(中国大陆):^1[3-9]\d{9}$(开头 1,第二位 3-9,后 9 位数字)。
  • 实例 2:验证邮箱格式:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z]{2,}$(支持字母、数字、下划线,域名后缀 2 位以上)。
  • 实例 3:验证密码(8-16 位,含大小写 + 数字):^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z0-9]{8,16}$

2. 批量替换:统一修改匹配内容

核心作用:格式标准化、敏感词屏蔽、冗余信息删除。
  • 实例 1:去除所有空白字符:匹配\s+,替换为空白(无内容)。
  • 实例 2:隐藏手机号中间 4 位:匹配1([3-9])\d{4}(\d{4}),替换为1$1****$2($1、$2 引用分组内容)。
  • 实例 3:将 “2025.10.01”“2025/10/01” 统一为 “2025-10-01”:先匹配[./],替换为-

3. 信息提取:从文本中精准抓取目标

核心作用:数据采集、内容筛选,从杂乱文本中提取有效信息。
  • 实例 1:提取所有邮箱:[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z]{2,}
  • 实例 2:提取 HTML 中的图片链接:<img src="(.*?)"(非贪婪匹配,捕获 src 属性值)。
  • 实例 3:提取 IP 地址:\b(?:\d{1,3}\.){3}\d{1,3}\b(匹配 4 段 1-3 位数字,用非捕获组(?:)避免多余分组)。

四、行业专属正则模板:直接复制使用

覆盖开发、办公、SEO 等高频场景,无需手动编写:

1. 开发场景

  • 匹配 URL:^https?://(?:[a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,}(/\S*)?$
  • 匹配 JSON 键值对:"([^"]+)":\s*"([^"]+)"(提取键和值)。
  • 匹配 SQL 注释:--.*$|/\*.*?\*/(单行 // 和多行 /* */ 注释)。

2. 办公场景

  • 匹配身份证号(18 位):\d{17}[\dXx](最后一位支持 X/x)。
  • 匹配邮政编码(6 位):\b\d{6}\b
  • 匹配中文汉字:[\u4e00-\u9fa5]+(提取纯中文内容)。

3. SEO 场景

  • 匹配网页标题:<title>(.*?)</title>(非贪婪匹配标题内容)。
  • 匹配 Meta 关键词:<meta name="keywords" content="(.*?)"
  • 匹配 URL 中的参数:(\w+)=(\w+)(提取参数名和参数值)。

五、实用工具推荐:降低使用门槛

1. 在线测试工具(新手必备)

2. 编辑器 / 开发工具集成

  • VS Code:内置正则匹配功能,替换时勾选 “使用正则表达式” 即可。
  • Notepad++:查找替换界面选择 “正则表达式” 模式,支持批量处理大文本。
  • Python re 模块:re.findall()提取、re.sub()替换、re.match()验证,编程场景首选。

六、避坑指南:新手常犯错误与解决方法

  • 混淆贪婪 / 非贪婪:.*(贪婪,匹配尽可能多)和.*?(非贪婪,匹配尽可能少),提取内容时优先用非贪婪(如提取标签内容)。
  • 忘记转义特殊字符:匹配.*(等特殊字符时,需加\转义(如\.匹配小数点)。
  • 位置匹配遗漏:验证完整格式时,需加^(开头)和$(结尾),避免部分匹配(如验证手机号不加^$可能匹配到 11 位以上数字中的片段)。
  • 忽略大小写:需匹配大小写不敏感内容时,添加修饰符i(如 Python 中re.IGNORECASE)。

正则表达式看似复杂,实则掌握基础语法 + 常用模板后,就能快速解决字符串处理难题。无论是编程开发中的数据清洗,还是办公中的批量整理,它都能帮你摆脱重复劳动,大幅提升效率。

相关导航

暂无评论

none
暂无评论...