正则表达式 知识量:10 - 22 - 55
正则表达式除了用于匹配文本外,还可以用于标记要匹配的文本的位置。标记文本位置的用途则主要是查找该位置前面或后面的文本。
示例文本:查找括号中的内容。
China, officially the People's Republic of China (PRC), is a unitary sovereign state in East Asia and the world's most populous country, with a population of around 1.404 billion.
正则表达式:
\(.+\)
结果:
Match | Position | Length |
---|---|---|
(PRC) | 49 | 5 |
以上正则表达式成功的匹配了括号内的内容“PRC”,但是括号本身也是匹配结果的一部分,如果不需要括号本身,就需要使用前后查找。
前后查找提供了一个必须匹配但不在结果中返回的模式。前后查找包括向前查找和向后查找。它们其实就是一个子表达式,这个子表达式的作用就是匹配一个文本位置。
向前查找就是标记要匹配的文本的位置,并返回位于该位置前面且符合匹配条件的文本。向前查找格式上就是由?=开头的子表达式。
示例文本:查找右括号前面的内容。
China, officially the People's Republic of China (PRC), is a unitary sovereign state in East Asia and the world's most populous country, with a population of around 1.404 billion.
正则表达式:
.+(?=\))
结果:
Match | Position | Length |
---|---|---|
China, officially the People's Republic of China (PRC | 0 | 53 |
以上正则表达式成功的匹配了右括号前面的内容,而且结果中不包含右括号本身,这正是前后查找的特点。
向后查找就是标记要匹配的文本的位置,并返回位于该位置后面且符合匹配条件的文本。向前查找格式上就是由?<=开头的子表达式。
示例文本:查找左括号后面的内容。
China, officially the People's Republic of China (PRC), is a unitary sovereign state in East Asia and the world's most populous country, with a population of around 1.404 billion.
正则表达式:
(?<=\().+
结果:
Match | Position | Length |
---|---|---|
PRC), | 50 | 6 |
以上正则表达式成功的匹配了左括号后面的文本,而且结果中不包含左括号本身。因为逗号后面是换行符,所以匹配到逗号就结束了。
组合应用向前查找和向后查找就可以实现查找括号内文本的功能了。
示例文本:查找括号内的文本。
China, officially the People's Republic of China (PRC), is a unitary sovereign state in East Asia and the world's most populous country, with a population of around 1.404 billion.
正则表达式:
(?<=\().+(?=\))
结果:
Match | Position | Length |
---|---|---|
PRC | 50 | 3 |
同时使用向前查找和向后查找成功的匹配了括号内的文本,而且结果中不包含括号本身。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6