《正则表达式经典实例(第2版)》——2.20 在替代文本中添加正则匹配

简介: 把整个正则匹配重新插回到替代文本中,是在匹配文本之前、之后或者两边,甚至是在匹配文本的多个副本之间插入新文本的一种比较容易的方式。除Python之外,你都不必在正则表达式中添加任何捕获分组,就能够在替换中使用整个匹配结果。

本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.20节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.20 在替代文本中添加正则匹配

问题描述
执行查找和替换,把所有URL都转换成指向该URL的HTML链接,并使用该URL作为链接的文本。在这个练习中,把URL定义为“http:”以及其后所有的非空字符。例如,Please visit应该被转换为Please visit。

解决方案
正则表达式

http:\S+
正则选项:无
正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby

替代文本

<a●href="$&">$&</a>
替代文本流派:.NET、JavaScript、Perl
<a●href="$0">$0</a>
替代文本流派:.NET、Java、XRegExp、PHP
<a●href="\0">\0</a>
替代文本流派:PHP、Ruby
<a●href="\&">\&</a>
替代文本流派:Ruby
<a●href="\g<0>">\g<0></a>
替代文本流派:Python

讨论
把整个正则匹配重新插回到替代文本中,是在匹配文本之前、之后或者两边,甚至是在匹配文本的多个副本之间插入新文本的一种比较容易的方式。除Python之外,你都不必在正则表达式中添加任何捕获分组,就能够在替换中使用整个匹配结果。

在Perl中,«$&»实际上是一个变量。在每次正则表达式匹配成功之后,Perl都会把完整正则匹配保存到这个变量中。在正则式中使用«$&»会带来性能损失,所以你可能更倾向使用捕获分组包裹整个正则式,以及指向该分组的反向引用。

.NET和JavaScript沿用了«$&»的语法来把正则匹配插入到替代文本中。Ruby使用反斜杠而不是美元符号作为替代文本中的记号,因此会使用«&»来指代整个匹配。

Java、PHP和Python中并不存在一个特殊记号来重新插入整个正则匹配,但是它们也允许把捕获分组匹配到的文本插入到替代文本中,这会在下一小节中进行讲解。整个匹配则是一个编号为0的隐式捕获分组。对于Python来说,我们需要使用命名捕获的语法以引用0号分组。在Python中并不支持«0»。

.NET、XRegExp和Ruby也支持第0个捕获分组的语法,但是使用哪种语法并不重要。因为结果都是一样的。

相关文章
|
机器学习/深度学习 存储 JavaScript
正则表达式基础语法与Java、JS使用实例
正则表达式基础语法与Java、JS使用实例
510 1
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
558 0
|
Java 程序员
Java 异常处理与正则表达式详解,实例演练及最佳实践
在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。 当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。 try...catch 语句 try 语句允许您定义一段代码块,并在其中测试是否发生错误。 catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。 try 和 catch 关键字成对使用,语法如下:
412 0
|
JavaScript 前端开发
JS正则表达式:常用正则手册/RegExp/正则积累(一)
JS正则表达式:常用正则手册/RegExp/正则积累
633 1
|
存储 JavaScript 安全
JS正则表达式:常用正则手册/RegExp/正则积累(二)
JS正则表达式:常用正则手册/RegExp/正则积累
526 0
正则表达式(有关String当中,有关正则的方法)
正则表达式(有关String当中,有关正则的方法)
|
Rust 监控 安全
【专栏】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式
【4月更文挑战第28天】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式。相比`grep`,它在处理大文件和复杂模式时更具优势。安装`rg`可通过软件包管理器,如在Debian系系统中使用`sudo apt install ripgrep`。基本用法包括简单搜索、递归搜索、忽略大小写、显示行号等。高级功能包括固定字符串搜索、多文件匹配、并行搜索、排除选项和区域搜索。适用于日志分析、代码审查等场景,是提升工作效率的利器。
3306 4
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
523 0
|
SQL 分布式计算 算法
【python】python指南(三):使用正则表达式re提取文本中的http链接
【python】python指南(三):使用正则表达式re提取文本中的http链接
667 0