正则表达式举例_正则表达式大全_正则常用表达式

大约一周前,我在编辑一个程序时想要更改一些变量名。我之前认为这将是一个简单的正则表达式查找/替换。只是这没有我想象的那么简单。

— Dr.drang

大约一周前,我在编辑一个程序时想要更改一些变量名。我之前认为这将是一个简单的正则表达式查找/替换。只是这没有我想象的那么简单。

变量名为 a10、v10 和 x10,我想分别将它们改为 a30、v30 和 x30。我想到使用 BBEdit 的查找窗口并输入:

正则表达式大全_正则常用表达式_正则表达式举例

Mistaken BBEdit replacement pattern

我不能简单地 30 替换为 10,因为代码中有一些与变量无关的数字 10。我认为我很聪明,所以我不想写三个非正则表达式替换,a10、v10 和 x10,每个一个。但是我却没有注意到替换模式中的蓝色。如果我这样做了,我会看到 BBEdit 将我的替换模式解释为“匹配组 13,后面跟着 0,而不是”匹配组 1,后面跟着 30,后者是我想要的。由于匹配组 13 是空白的,因此所有变量名都会被替换为 0。

你看,BBEdit 可以在搜索模式中匹配多达 99 个分组,严格来说,我们应该在替换模式中引用它们时使用两位数字。但在大多数情况下,我们可以使用 1 到 9 而不是 1 到 9,因为这没有歧义。换句话说,如果我尝试将 a10、v10 和 x10 更改为 az、vz 和 xz,那么使用 1z的替换模式就可以了。因为后面的 z 意味着不会误解释该模式中 1。

因此,在撤消替换后,我将模式更改为这样:

正则常用表达式_正则表达式举例_正则表达式大全

Two-digit BBEdit replacement pattern

它可以正常工作。

还有另一个选择:命名组。这是使用 var 作为模式名称:

正则表达式举例_正则表达式大全_正则常用表达式

Named BBEdit replacement pattern

我从来都没有使用过命名组,无论正则表达式是在文本编辑器还是在脚本中。我的总体感觉是,如果模式复杂到我必须使用变量来跟踪所有组,那么我应该停下来并将问题分解为更小的部分。

顺便说一下,你可能已经听说 BBEdit 正在庆祝它诞生 25周年 。当一个有良好文档的应用有如此长的历史时,手册的积累能让人愉快地回到过去的日子。当我在 BBEdit 手册中查找命名组的表示法时,我遇到了这个说明:

正则表达式大全_正则常用表达式_正则表达式举例

BBEdit regex manual excerpt

BBEdit 目前的版本是 12.5。第一次出现于 2001 年的 V6.5。但手册希望确保长期客户(我记得是在 V4 的时候第一次购买)不会因行为变化而感到困惑,即使这些变化几乎发生在二十年前。

via:

作者: Dr.Drang 选题: lujun9972 译者: geekpi 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:11082411

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。