《正则表达式经典实例(第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个捕获分组的语法,但是使用哪种语法并不重要。因为结果都是一样的。

相关文章
|
2月前
|
机器学习/深度学习 存储 JavaScript
正则表达式基础语法与Java、JS使用实例
正则表达式基础语法与Java、JS使用实例
61 1
|
5月前
|
Java
Java正则表达式校验实例
Java正则表达式校验实例
41 0
|
5月前
|
Unix Linux
如何在 Linux 中使用 Grep 和正则表达式进行文本搜索?
如何在 Linux 中使用 Grep 和正则表达式进行文本搜索?
178 5
|
6天前
|
开发者 Python
Python中的正则表达式:re模块详解与实例
Python中的正则表达式:re模块详解与实例
|
6月前
|
Shell
shell中正则表达式中字符的应用具体实例以及详解
shell中正则表达式中字符的应用具体实例以及详解
82 3
|
6月前
|
算法 C语言 数据安全/隐私保护
【C++技能树】快速文本匹配 --正则表达式介绍与C++正则表达式使用
假设要判断一个QQ号是否有效,他必须满足以下三个规则
63 0
|
8月前
|
Python
34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例
34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例
|
9月前
|
Python
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
178 0
|
JavaScript 前端开发
JavaScript使用正则表达式进行邮箱表单验证实例
JavaScript使用正则表达式进行邮箱表单验证实例
58 0
|
C语言
【正则表达式】快速学习一个c语言的实例
【正则表达式】快速学习一个c语言的实例
90 0

相关产品

  • 云迁移中心