《正则表达式经典实例(第2版)》——1.2 使用正则表达式进行查找和替换

简介: 虽然替代文本(replacement text)并不是一个正则表达式,读者也可以使用某些特殊的语法构造动态的替代文本。所有的流派都允许把正则表达式或者某个捕获分组匹配到的文本,重新添加到替代字符串中。实例2.20和实例2.21会对此加以讲解。

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

1.2 使用正则表达式进行查找和替换

查找和替换(search-and-replace)对正则表达式来说是一个常见的任务。查找和替换的功能会接受一个目标字符串、一个正则表达式和一个替代字符串作为输入。它的输出则是把目标字符串中所有与正则表达式相匹配的字符串都替换为“替代文本”。

虽然替代文本(replacement text)并不是一个正则表达式,读者也可以使用某些特殊的语法构造动态的替代文本。所有的流派都允许把正则表达式或者某个捕获分组匹配到的文本,重新添加到替代字符串中。实例2.20和实例2.21会对此加以讲解。有些流派还会支持把匹配的上下文添加到替代文本中,这会在实例2.22中讲解。在第3章中,实例3.16将教你如何在代码中为每个匹配都生成不同的替代文本。

众多替代文本流派
由于不同正则表达式软件开发人员的想法各异,所以出现了非常多的正则表达式流派,每种流派都拥有不同的语法和特性集。而这对于替代文本来说也是一样的。事实上,替代文本拥有比正则表达式更多的流派。构造一个正则表达式引擎是非常困难的。大多数程序员都倾向于复用某个已有的引擎,因为在已有的正则表达式引擎上绑定查找和替换的功能是相当容易的。这样做造成的结果是,如果正则表达式库没有内置查找和替换功能,它们之上就会存在许多替代文本的流派。

幸运的是,除了PCRE,本书中所有的正则表达式流派都拥有相对应的替代文本流派。PCRE中的这个问题却使得使用基于其流派正则程序的程序员感到无所适从。开源PCRE库中并不包含任何替换功能。结果是,所有基于PCRE的应用程序和编程语言都需要提供它们自己的查找和替换功能。大多数程序员都会试图去复制已有的语法,但是从来不会按照完全相同的方式去做。
screenshot
screenshot

相关文章
|
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
|
4月前
|
Java
正则表达式在Java中的应用与实例
正则表达式在Java中的应用与实例
|
6月前
|
开发者 Python
Python中的正则表达式:re模块详解与实例
Python中的正则表达式:re模块详解与实例
244 0
|
Shell
shell中正则表达式中字符的应用具体实例以及详解
shell中正则表达式中字符的应用具体实例以及详解
134 3
34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例
34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例
|
Python
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
252 0
|
JavaScript 前端开发
JavaScript使用正则表达式进行邮箱表单验证实例
JavaScript使用正则表达式进行邮箱表单验证实例
91 0
|
C语言
【正则表达式】快速学习一个c语言的实例
【正则表达式】快速学习一个c语言的实例
151 0