正则表达式使用指南五
来源:互联网 发布:win10传递优化文件 编辑:程序博客网 时间:2024/05/02 04:39
/^Chapter|Section [1-9][0-9]{0,1}$/
很遗憾,上面的正则表达式要么匹配行首的单词 Chapter,要么匹配行尾的单词 Section 及跟在其后的任何数字。如果输入字符串是 Chapter 22,那么上面的表达式只匹配单词 Chapter。如果输入字符串是 Section 22,那么该表达式匹配 Section 22。
若要使正则表达式更易于控制,可以使用括号来限制替换的范围,即,确保它只应用于两个单词 Chapter 和 Section。但是,括号也用于创建子表达式,并可能捕获它们以供以后使用,这一点在有关反向引用的那一节讲述。通过在上面的正则表达式的适当位置添加 括号,就可以使该正则表达式匹配 Chapter 1 或 Section 3。
下面的正则表达式使用括号来组合 Chapter 和 Section,以便表达式正确地起作用:
/^(Chapter|Section) [1-9][0-9]{0,1}$/
虽然这些表达式正确发挥作用,但 Chapter| Section 两边的括号还会使得两个匹配单词中的任何一个被捕获以供将来使用。由于在上面的表达式中只有一组括号,因此,只有一个被捕获的“子匹配项”。可以通过使用 RegExp 对象的 $1-$9 属性来引用此子匹配项。
在上面的示例中,您只需要使用括号来组合单词 Chapter 和 Section 之间的选择。若要防止匹配被保存以备将来使用,请在括号内正则表达式模式之前放置 ?:。下面的修改提供相同的能力而不保存子匹配项:
/^(?: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 之后继续搜索。
- 正则表达式使用指南五
- 正则表达式使用指南一
- 正则表达式使用指南二
- 正则表达式使用指南三
- 正则表达式使用指南四
- 正则表达式使用指南六
- 正则表达式使用指南七
- Linux正则表达式使用指南
- 正则表达式五
- 知识点五:正则表达式
- Hive(五)--正则表达式
- 五、1、正则表达式
- Java--正则表达式(五)
- 正则表达式在线手册及使用指南技巧
- 强烈推荐的python正则表达式使用指南
- 备忘(五)正则表达式
- 正则表达式规则(五)
- Java正则表达式(五)
- samba配置文件一则
- 正则表达式使用指南三
- 《编程珠玑》
- 正则表达式使用指南四
- 托管C++(Managed C++)概述
- 正则表达式使用指南五
- 四芯线够不够接网线
- 正则表达式使用指南六
- 《深度探索C++对象模型》
- 委托、事件和回调的关系
- WinXP系统网络不能互访七大解决之道
- 正则表达式使用指南七
- 《C语言接口与实现:创建可重用软件的技术》
- 硬盘绝密维修资料