news 2026/10/15 20:56:06

正则表达式 - 选择和分支

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正则表达式 - 选择和分支

正则表达式中的选择和分支(Alternation)

选择(Alternation)是正则表达式中实现“或”逻辑的核心机制,使用竖线|来分隔多个备选模式。匹配时,正则引擎会从左到右尝试每个分支,一旦某个分支成功匹配,就停止尝试。

这让正则能同时匹配多种不同的模式,非常适合处理多格式输入、可选变体等场景。

1. 基本语法:|(分支操作符)
语法描述示例匹配说明
`ab`匹配 a 或 b`/cat
`^ab$`结合锚点限制位置`/^cat
  • |的优先级很低,几乎最低(仅高于量词后的修饰符),它会作用于整个模式的两侧。
  • 因此,通常需要用括号()来明确分支范围。
2. 结合分组控制分支范围
示例说明
`/(catdog)/`
`/^(catdog)$/i`
`/(https?ftp)😕//`
`/^(1920)\d{2}$/`
3. 多分支与优先级(从左到右)

正则引擎按分支顺序尝试,左边的优先。

示例匹配结果
`/catdog
`/dogcat/` 匹配 “cat”

最佳实践:将更具体、更常见的模式放在左边,提高效率和准确性。

示例:

/^(jpeg|jpg|png|gif|webp)$/i

优先匹配 “jpeg” 而不是让 “jpg” 抢走 “jpeg” 的前三个字符。

4. 复杂分支示例
场景正则表达式说明
匹配多种日期格式`/^\d{4}-\d{2}-\d{2}$^\d{2}/\d{2}/\d{4}$
匹配邮箱提供商`/@(gmail.comyahoo.com
匹配颜色值`/^#([A-Fa-f0-9]{6}[A-Fa-f0-9]{3})$/`
匹配手机号(多种前缀)`/^1(34
5. 分支与量词的结合

量词作用于紧邻的模式,分支时需注意分组:

示例正确匹配错误理解
`/a(bcde)+f/`“abcdebcdef” 等
`/abcdef+/`“abc” 或 “defff”
`/(ab)+(cd)+/`“abab” 或 “cdcd”
6. 实际应用场景
场景正则示例用途
验证多种图片格式`/.(jpe?gpng
匹配美式/英式拼写`/colorcolour/i`
解析日志级别`/^(ERRORWARN
匹配 IPv4 地址(简化版)`/^((\d{1,2}1\d{2}
去除多种空白`/\s+
7. 注意事项
  • 性能:分支过多或过长可能导致回溯过多,影响性能。尽量将公共部分提取到分支外。
    示例优化:
    坏:/apple|application|apply/
    好:/appl(e|ication|y)/

  • 捕获组:如果你需要捕获分支匹配的内容,使用捕获组(cat|dog);如果不需要,用非捕获组(?:cat|dog)提高性能和清晰度。

  • 空分支:/a|/可以匹配 “a” 或空字符串(某些引擎允许),需谨慎。

选择和分支是正则表达式实现“多路匹配”的核心,结合分组、量词和锚点,能处理非常复杂的模式变体。掌握它后,你能轻松应对现实中多种格式并存的文本处理需求!

如果你有具体格式需要匹配(如多种时间格式、日志解析等),欢迎提供例子,我可以帮你设计最优正则。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 13:43:19

PaddlePaddle镜像支持Jupyter Notebook在线编程环境

PaddlePaddle镜像集成Jupyter Notebook:重塑AI开发体验 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是环境配置——“为什么你的代码在我机器上跑不起来?”这种对话几乎成了每个AI工程师的日常。依赖冲突、版本错配、…

作者头像 李华
网站建设 2026/10/15 9:25:28

4步快速出图!Qwen-Image-Edit-Rapid-AIO v5重构AI图像编辑效率

Qwen-Image-Edit-Rapid-AIO v5是阿里巴巴通义千问团队推出的专业级AI图像编辑模型,通过融合优化技术和多模态组件,实现了仅需4步推理即可完成高质量图像编辑,将传统编辑流程效率提升8倍,重新定义了AI辅助设计的工作标准。 【免费下…

作者头像 李华
网站建设 2026/10/15 1:05:09

mui框架用户反馈终极指南:打造完美应用体验的完整教程

mui框架用户反馈终极指南:打造完美应用体验的完整教程 【免费下载链接】mui 最接近原生APP体验的高性能框架 项目地址: https://gitcode.com/gh_mirrors/mu/mui 在移动应用竞争日益激烈的今天,用户反馈成为连接开发者与用户需求的关键桥梁。mui框…

作者头像 李华
网站建设 2026/10/15 1:10:22

数字人跨平台开发创新方案:重新定义多端部署架构

数字人跨平台开发创新方案:重新定义多端部署架构 【免费下载链接】duix.ai 项目地址: https://gitcode.com/GitHub_Trending/du/duix.ai 技术演进背景:数字人部署的挑战与机遇 在人工智能技术快速发展的当下,数字人技术正从单一平台…

作者头像 李华