`

11.正则表达式:替换和分组

阅读更多

替换使用 | 字符来允许在两个或多个替换选项之间进行选择。 例如,可以扩展章节标题正则表达式,以返回比章标题范围更广的匹配项。但是,这并不象您可能认为的那样简单。替换匹配 | 字符两边的尽可能最大的表达式。您可能认为,下面的表达式匹配出现在行首和行尾、后面跟一个或两个数字的 Chapter 或 Section:

/^Chapter|Section [1-9][0-9]{0,1}$/

很遗憾,上面的正则表达式要么匹配行首的单词 Chapter ,要么匹配行尾的单词 Section 及跟在其后的任何数字。如果输入字符串是 Chapter 22,那么上面的表达式只匹配单词 Chapter 。如果输入字符串是 Section 22,那么该表达式匹配 Section 22。

若要使正则表达式更易于控制,可以使用括号来限制替换的范围 ,即,确保它只应用于两个单词 ChapterSection 。但是,括号也用于创建子表达式,并可能捕获它们以供以后使用,这一点在有关反向引用的那一节讲述。通过在上面的正则表达式的适当位置添加括号,就可以使该正则表达式匹配 Chapter 1 或 Section 3。

 

下面的正则表达式使用括号来组合 Chapter 和 Section,以便表达式正确地起作用:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

虽然这些表达式正确发挥作用,但 Chapter| Section 两边的括号还会使得两个匹配单词中的任何一个被捕获以供将来使用。由于在上面的表达式中只有一组括号,因此,只有一个被捕获的“子匹配项”。可以通过使用 RegExp 对象的 $1-$9 属性来引用此子匹配项。

 

在上面的示例中,您只需要使用括号来组合单词 ChapterSection 之间的选择。若要防止匹配被保存以备将来使用,请在括号内正则表达式模式之前放置 ?: 。下面的修改提供相同的能力而不保存子匹配项:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

 

除 ?: 元字符外,两个其他非捕获元字符创建被称为“预测先行”匹配的某些内容。 正向预测先行使用 ?= 指定,它匹配处于括号中匹配正则表达式模式的起始点的搜索字符串。反向预测先行使用 ?! 指定,它匹配处于与正则表达式模式不匹配的字符串的起始点的搜索字符串。

例如,假设您有一个文档,该文档包含指向 Windows 3.1、Windows 95、Windows 98 和 Windows NT 的引用。再进一步假设,您需要更新该文档,将指向 Windows 95、Windows 98 和 Windows NT 的所有引用更改为 Windows 2000。下面的正则表达式(这是一个正向预测先行的示例)匹配 Windows 95、Windows 98 和 Windows NT:

/Windows(?=95 |98 |NT )/

找到一处匹配后,紧接着就在匹配的文本(不包括预测先行中的字符)之后搜索下一处匹配。例如,如果上面的表达式匹配 Windows 98,将在 Windows 之后而不是在 98 之后继续搜索。

分享到:
评论

相关推荐

    易语言正则表达式文本替换

    例如,"子程序_正则文本替换"可能就是一个易语言中用于执行正则表达式替换的子程序,它接收输入的文本、正则表达式模式和替换字符串,然后返回经过替换操作的新文本。 1. **正则表达式基础** - **元字符**:如`.`...

    正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar

    正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索、替换操作。在编程语言中,正则表达式(Regular Expression)被广泛应用于数据验证、文本提取、数据清洗等多个领域。它们通过使用特定的语法...

    正则表达式:深入理解与应用.zip

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。深入理解和应用正则表达式对于任何IT专业人士来说都是必不可少的技能,无论你是Web...

    易语言正则表达式学习工具源码

    1. 正则表达式函数:易语言提供了如“正则表达式匹配”、“正则表达式替换”等函数,用于执行正则表达式的操作。 2. 创建正则对象:首先需要创建一个正则对象,然后设置其模式(即正则表达式)。 3. 模式匹配:使用...

    C#字符串和正则表达式参考手册

    1. 正则表达式基础:正则表达式是一种模式匹配工具,用于在字符串中搜索、替换和提取特定模式。 2. 正则表达式对象:在C#中,使用`System.Text.RegularExpressions`命名空间下的`Regex`类来处理正则表达式。 3. ...

    正则表达式.rar || 正则表达式.rar

    正则表达式,简称为正则,是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换。在计算机科学和编程领域,正则表达式是处理文本的基础,广泛应用于数据验证、搜索、替换和提取等多种场景。下面将详细...

    正则表达式.rar 正则表达式.rar

    正则表达式,简称为正则或regex,是一种强大的文本处理工具,用于匹配、查找、替换和处理字符串。它在编程、数据验证、文本编辑器等多个领域广泛应用,是IT行业中不可或缺的基础知识。 正则表达式的基本概念: 1. *...

    正则表达式大全.docx

    正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换操作。它由特殊字符(称为“元字符”)和普通字符组成,能够灵活地定义要查找的模式。以下是一些常见的正则表达式模式及其用途: 1. ...

    第11.25节 Python正则表达式编译re.compile及正则对象使用.rar

    在Python编程语言中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等...通过创建正则表达式对象,我们可以灵活地执行多种正则操作,如查找、替换和分割字符串,从而在处理文本数据时展现出强大的功能。

    正则表达式的网页练习器

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。"正则表达式的网页练习器"是一个实用的在线工具,它帮助用户快速学习和实践正则表达式...

    02.正则表达式1

    正则表达式(Regular Expression)是编程领域中用于处理字符串的强大工具,它通过特定的语法模式来匹配、查找、替换或提取文本中的特定序列。在.NET框架中,正则表达式提供了一整套API,使得开发者能够高效地处理...

    Python程序设计:正则表达式检索与替换.pptx

    3. 替换(Replace):`re.sub()`函数查找符合正则表达式的部分,并用新的字符串替换。 4. 分割(Split):`re.split()`函数根据正则表达式将字符串分割成多个子串。 具体函数的使用方法: - `re.match(pattern, ...

    13.正则表达式.zip

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。在IT行业中,尤其是在编程、数据处理和网络爬虫等领域,正则表达式是必不可少的基础技能之一。JSON(JavaScript Object Notation)则是...

    正则表达式工具下载

    在计算机科学领域,正则表达式(Regular Expression,简称regex)是用于匹配一系列字符串的模式,广泛应用于数据验证、搜索替换、文本分析等多个场景。 RegexBuddy.exe 是一个专门的正则表达式测试和调试工具,它...

    正则表达式替换工具 1.1.0.9

    正则表达式替换工具1.1.0.9是一款专为处理文本字符串而设计的强大工具,它能够帮助用户测试和执行正则表达式,并进行批量替换操作。在信息技术领域,正则表达式(Regular Expression)是一种模式匹配语言,用于搜索...

    正则表达式.doc 正则表达式

    正则表达式是一种强大的文本处理工具,用于模式匹配和字符串搜索。它是由特定字符组成的字符串,用于定义要在文本中查找的模式。正则表达式在多种编程语言和工具中被广泛支持,包括Java、Perl、PHP、Python、...

    精通正则表达式~~~

    占有优先量词和固化分组... 169 占有优先量词,?+、*+、++和{m,n}+. 172 环视的回溯... 173 多选结构也是匹配优先的吗... 174 发掘有序多选结构的价值... 175 NFA、DFA和POSIX.. 177 最左最长规则... 177 ...

    正则表达式转换工具

    - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:在数据预处理阶段,正则表达式可以帮助剔除无关字符,整理数据格式。 - 网页抓取:在网络爬虫中,正则表达式用于提取...

Global site tag (gtag.js) - Google Analytics