MonkeyHua

正则表达式基础十:前后匹配(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 100 apples,
50 oranges, and 60 pears.
I saved $5 on this order.

说明:\b代表匹配单词开始和结束位置
(?<!\$)代表匹配的单词不能以$开头
\d+代表单词后续匹配一个或多个数字

posted on 2026-03-25 17:05  MonkeyHua  阅读(1)  评论(0)    收藏  举报

导航