正则表达式

正则表达式 知识量:10 - 22 - 55

9.1 前后查找><

查找文本的新需求- 9.1.1 -

正则表达式除了用于匹配文本外,还可以用于标记要匹配的文本的位置。标记文本位置的用途则主要是查找该位置前面或后面的文本。

示例文本:查找括号中的内容。

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.

正则表达式:

\(.+\)

结果:

MatchPositionLength
(PRC)495

以上正则表达式成功的匹配了括号内的内容“PRC”,但是括号本身也是匹配结果的一部分,如果不需要括号本身,就需要使用前后查找。

前后查找提供了一个必须匹配但不在结果中返回的模式。前后查找包括向前查找和向后查找。它们其实就是一个子表达式,这个子表达式的作用就是匹配一个文本位置。

向前查找- 9.1.2 -

向前查找就是标记要匹配的文本的位置,并返回位于该位置前面且符合匹配条件的文本。向前查找格式上就是由?=开头的子表达式。

示例文本:查找右括号前面的内容。

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.

正则表达式:

.+(?=\))

结果:

MatchPositionLength
China, officially the People's Republic of China (PRC053

以上正则表达式成功的匹配了右括号前面的内容,而且结果中不包含右括号本身,这正是前后查找的特点。

向后查找- 9.1.3 -

向后查找就是标记要匹配的文本的位置,并返回位于该位置后面且符合匹配条件的文本。向前查找格式上就是由?<=开头的子表达式。

示例文本:查找左括号后面的内容。

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.

正则表达式:

(?<=\().+

结果:

MatchPositionLength
PRC),506

以上正则表达式成功的匹配了左括号后面的文本,而且结果中不包含左括号本身。因为逗号后面是换行符,所以匹配到逗号就结束了。

前后查找的组合应用- 9.1.4 -

组合应用向前查找和向后查找就可以实现查找括号内文本的功能了。

示例文本:查找括号内的文本。

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.

正则表达式:

(?<=\().+(?=\))

结果:

MatchPositionLength
PRC503

同时使用向前查找和向后查找成功的匹配了括号内的文本,而且结果中不包含括号本身。