3.3.3 分组分支的匹配规则是:按照分支的顺序逐个匹配 , 当前面的分支满足要求了 , 则舍弃后面的分支 。
举个简单的分支栗子 , 使用正则表达式去匹配 /abcde|abc/g 文本 abcd , 还是通过 RegexBuddy 查看执行步骤:
文章插图
- 正则引擎匹配 a 。
- 正则引擎匹配 b 。
- 正则引擎匹配 c 。
- 正则引擎匹配 d 。
- 正则引擎匹配 e , 糟糕!下一个并不是 e , 赶紧回溯!
- 上一个分支走不通 , 切换分支 , 第二个分支正则引擎匹配 a 。
- 第二个分支正则引擎匹配 b 。
- 第二个分支正则引擎匹配 c , 匹配成功!
4. 正则的分析与调试RegexBuddy 是个十分强大的正则表达式学习、分析及调试工具 。RegexBuddy 支持 C++、Java、JavaScript、Python 等十几种主流编程语言 。通过 RegexBuddy , 能看到正则一步步创建的过程 。结合测试文本 , 你能看到正则一步步执行匹配的过程 , 这对于理解正则回溯和对正则进行进一步优化 , 都有极大的帮助 。
4.1 安装分析调试工具可以在 RegexBuddy 的官方网站下载及获取 RegexBuddy 。
下载完后 , 一步步点击安装即可 。
文章插图
4.2 工具界面介绍下图便是 RegexBuddy 界面的各个面板及相关功能 。
文章插图
4.3 创建正则为了方便使用 , 可以在布局设置那里将布局设置成 Side by Side Layout 。
在正则输入区输入你的正则 regex1 , 查看 Create 面板 , 就会发现面板上显示了正则的创建过程(或者说是匹配规则) , 在 Test 面板区域输入你的测试文本 , 满足 regex1 匹配规则的部分会高亮显示 , 如下图所示 。
文章插图
4.4 使用 RegexBuddy 的 Debug 功能选中测试文本 , 点击 debug 就可以进入 RegexBuddy 的 debug 模式 , 个人觉得这是 RegexBuddy 最强大地方 , 因为它可以让你清楚地知道你输入的正则对测试文本的匹配过程 , 执行了多少步 , 哪里发生了回溯 , 哪里需要优化 , 你都能一目了然 。
文章插图
4.5 使用 RegexBuddy 的 Library 功能RegexBuddy 的正则库内置了很多常用正则 , 日常编码过程中需要的很多正则表达式都能在该正则库中找到 。
文章插图
4.6 更多工具推荐
- 正则可视化-regexper
- 正则可视化-regulex
- 正则在线调试
5.1 避免量词嵌套举个简单的例子对比:
我们使用正则表达式/a*b/去匹配字符串 aaaaa , 看下图 RegexBuddy 的执行过程:
文章插图
我们将以上正则修改成/(a*)*b/去匹配字符串 aaaaa , 再看看 RegexBuddy 的执行结果过程:
文章插图
以上两个正则的基本执行步骤可以简单认为是:
- 贪婪匹配
- 回溯
- 直至发现匹配失败
所以 , 面对量词嵌套 , 我们需作出适当的转化消除这些嵌套:
推荐阅读
- 一个能够流畅运行Adobe全家桶的电脑配置该如何选择?
- 2021年,普通人如何迈出自媒体的第一步,打造“睡后收入”?
- windows10如何设置能更好的发挥电脑的性能?
- Spring 是如何解析 bean 标签的?
- 前后端分离项目,如何解决跨域问题?
- 秋季养生如何养好肺气
- 血脂高如何进行治疗
- |如何把心思放到本职工作中?要把全部心思放到本职工作中吗
- 微店购物如何进行操作呢
- win7如何重装系统教程-电脑win7系统如何重装-_1