正则表达式基础十:前后匹配(Lookaround Match)
介绍
用来向前匹配和向后匹配
元字符列表
- 向前查找匹配:
(?=) - 向后查找匹配部分支持:
(?<=) - 否定前后查找匹配:
(?!)、(?<!)
向前查找匹配((?=))
根据匹配字符向前查找内容
示例
原始内容:
http://www.forta.com/
https://mail.forta.com/
ftp://ftp.forta.com/
正则表达式1:
.+(:)
http://www.forta.com/
https://mail.forta.com/
ftp://ftp.forta.com/
正则表达式2:
.+(?=:)
http://www.forta.com/
https://mail.forta.com/
ftp://ftp.forta.com/
说明:
.+代表匹配一个或多个任意字符
(?=:)代表查找位置是符号:,并向前查找,且匹配结果不包括查找符号本身
向后查找匹配([-])
匹配字符范围中的一个
示例
原始内容:
ABC01: $23.45
HGG42: $5.31
CFMX1: $899.00
XTC99: $69.96
Total items found: 4
正则表达式1:
$[0-9.]+
ABC01:
$23.45
HGG42:$5.31
CFMX1:$899.00
XTC99:$69.96
Total items found: 4
正则表达式2:
(?<=\$)[0-9.]+
ABC01: $
23.45
HGG42: $5.31
CFMX1: $899.00
XTC99: $69.96
Total items found: 4
说明:
(?<=\$)代表查找位置是符号$,并向后查找,且匹配结果不包括查找符号本身
[0-9.]+代表匹配一个或多个数字或符号.
否定前后查找匹配((?!)、(?<!))
匹配除当前字符集以外的字符
示例
原始内容:
I paid $30 for 100 apples,
50 oranges, and 60 pears.
I saved $5 on this order.
正则表达式:
\b(?<!\$)\d+\b
I paid $30 for
100apples,
50oranges, and60pears.
I saved $5 on this order.
说明:
\b代表匹配单词开始和结束位置
(?<!\$)代表匹配的单词不能以$开头
\d+代表单词后续匹配一个或多个数字
浙公网安备 33010602011771号