正则表达式(Regular Expression),简称 Regex,是一种用于处理文本的强大工具。它广泛应用于编程、数据挖掘、文本编辑等多个领域。在泓文正则的世界里,我们可以通过一系列字符和操作符来定义复杂的文本匹配规则,从而实现高效的文本处理。
正则表达式的基础
字符集和元字符
正则表达式中,字符集是指一组可以匹配的字符,而元字符是具有特殊意义的字符。以下是一些常见的字符集和元字符:
字符集:
a-z
、
A-Z
、
0-9
、
_
、
–
等
元字符:
.
(点号,匹配除换行符以外的任意单个字符)、
*
(匹配前面的子表达式零次或多次)、
+
(匹配前面的子表达式一次或多次)、
?
(匹配前面的子表达式零次或一次)、
[]
(字符集合,匹配方括号内的任意一个字符)、
^
(取反,匹配不在括号内的任意一个字符)、
()
(分组,用于捕获和引用匹配结果)等。
量词
量词用于指定匹配的次数,常见的量词有:
?
:匹配前面的子表达式零次或一次
*
:匹配前面的子表达式零次或多次
+
:匹配前面的子表达式一次或多次
{n}
:匹配前面的子表达式恰好 n 次
{n,}
:匹配前面的子表达式至少 n 次
{n,m}
:匹配前面的子表达式至少 n 次,但不超过 m 次
分组和引用
分组可以将正则表达式中的部分字符组合成一个整体,便于后续引用。分组可以通过括号实现:
()
:创建一个分组,并捕获匹配结果
\1
:引用第一个分组匹配的文本
\2
:引用第二个分组匹配的文本,以此类推
泓文正则的高级特性
贪婪匹配与非贪婪匹配
正则表达式默认采用贪婪匹配,即匹配尽可能多的字符。如果需要匹配尽可能少的字符,可以使用非贪婪匹配:
使用
*?
、
+?
、
??
或
{n,m}?
来实现非贪婪匹配
前瞻和后瞻
前瞻和后瞻用于检查字符串中的某个位置是否满足特定条件,但不消耗任何字符:
正向前瞻:
(?=…)
,表示匹配后面的文本
正向后瞻:
(?<=...)
,表示匹配前面的文本
负向前瞻:
(?!...)
,表示匹配前面的文本
负向后瞻:
(?