正则表达式 正向/负向先行断言 \S {} 示例


数据准备

⏹文件1

0561-10 AAA 123 dfg  @@345 sss
0561-20 BBB 456 ssa
0561-30 CCC 123 sss ~1~2
0561-40 CCC 432 cvf
0561-50 DDD 123 sss
0561-60 EEE 111 sss 123
0561-60 FFF 111 123 YYY

⏹文件2

foo1bar foo2bar foo2wwebar foo3baz
foo~bar foo@Dwbar foo3baz

一 . 先行断言

1.1 正向先行断言

正向先行断言用于断言在某个位置之后必须能匹配一个特定的模式。语法为:(?=pattern)

\s123.*(?=sss)

  • 任意空白字符后面跟着 123,然后跟着任意数量的字符,直到遇到后面紧跟着 sss 的位置
  • 该行,要有先有 123,再有 sss,且 sss 不参与匹配

在这里插入图片描述

1.2 负向先行断言

负向先行断言用于断言在某个位置之后不能匹配一个特定的模式。语法为:(?!pattern)

^(?=.*123)(?!.*sss).*

  • ^:匹配字符串的开始位置。
  • (?=.*123):正向先行断言,表示在当前位置后面必须至少包含 123 这个子串
  • (?!.*sss):负向先行断言,表示在当前位置后面不能包含 sss 这个子串
  • .*:匹配任意数量(包括零个)的字符。
  • $:匹配字符串的结束位置。

⏹确保字符串中包含至少一个 123,并且不包含 sss。
如果符合这两个条件,那么整个字符串将被匹配。

在这里插入图片描述


二. 配合 {} 和 \S 使用

  • \S:匹配任意非空白字符
  • {}:用来指定前面模式的重复次数的量词
    • {n}:匹配前面的模式恰好 n 次
    • {n,}:匹配前面的模式至少 n 次
    • {n,m}:匹配前面的模式至少 n 次,最多 m 次

2.1 匹配一个任意非空白字符

foo\S(?=bar)

  • foo:字面匹配字符序列 foo
  • \S:匹配任意非空白字符
  • (?=bar):正向先行断言,表示在当前位置之后必须紧跟着字符串 bar

在这里插入图片描述

2.2 匹配任意多个非空白字符

foo\S+(?=bar)

在这里插入图片描述

2.3 匹配3个非空白字符

foo\S{3}(?=bar)

在这里插入图片描述

2.4 匹配至少3个非空白字符

foo\S{3,}(?=bar)

在这里插入图片描述

2.5 匹配0~3个非空白字符

foo\S{0,3}(?=bar)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值