《正则表达式经典实例(第2版)》——2.22 把匹配上下文插入到替代文本中

简介: 上下文(context)这个术语,指的是正则表达式所应用于的目标文本。总共存在3种上下文:正则匹配之前的目标文本、正则匹配之后的目标文本以及整个目标文本。在匹配之前的文本有时候被称作左上下文(left context),而匹配之后的文本则相应地被称作右上下文(right context)。

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

2.22 把匹配上下文插入到替代文本中

问题描述
创建一个替代文本,用来把正则表达式匹配的文本替换为匹配之前的文本紧跟完整目标文本再紧跟匹配之后的文本。例如,如果在BeforeMatchAfter中找到的是Match,那么把这个匹配换成BeforeBeforeMatchAfterAfter,最终得到的新文本是BeforeBefore BeforeMatchAfterAfterAfter。

解决方案

$`$_$'
替代文本流派:.NET、Perl
\`\`\&\'\'
替代文本流派:Ruby
$`$`$&$'$'
替代文本流派:JavaScript

讨论
上下文(context)这个术语,指的是正则表达式所应用于的目标文本。总共存在3种上下文:正则匹配之前的目标文本、正则匹配之后的目标文本以及整个目标文本。在匹配之前的文本有时候被称作左上下文(left context),而匹配之后的文本则相应地被称作右上下文(right context)。整个目标文本则是左上下文、匹配再加右上下文。

.NET和Perl支持使用screenshot和«$_»来把所有3种形式的上下文插入到替代文本中。事实上,在Perl中每次成功的正则匹配之后都会赋值给这些变量,并且可以在任何代码中使用,直到遇到下一次匹配尝试。“美元符号+反引号”对应左上下文。在标准美式键盘上,你可以按键盘左上角1键左边的键来输入反引号。“美元符号+垂直引号”对应右上下文。垂直引号也就是通常的单引号。在标准美式键盘上,它位于分号和回车键(Enter)之间。“美元符号+下划线”是整个目标文本。与.NET和Perl类似,JavaScript也使用« $` »和« $' »来代表左、右上下文。然而,JavaScript并没有提供单个记号用于插入整个目标文本。你可以自己重构目标文本,把整个正则匹配通过« $& »添加到左、右上下文之间即可。

Ruby通过«`»和«'»支持左、右上下文,并且使用«&»来插入整个正则匹配。与JavaScript一样,Ruby中也不存在插入整个目标文本的记号。

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