正则表达式-嵌入条件

这篇博客介绍了正则表达式中的条件处理,包括回溯引用条件和前后查找条件。通过示例解释了如何在正则表达式中使用?(backreference)true-regex和?(backreference)true-regex|false-regex来实现逻辑判断,如匹配北美电话号码格式和美国邮政编码的正则表达式。强调了在编写正则表达式时需要考虑全面的匹配情况和排除不期望的匹配。
摘要由CSDN通过智能技术生成

不是所有环境下的正则表达式都支持条件处理。
正则表达式里的条件要用?定义。
?这个元字符表示的意思很多,一定要区分开。有这么几种意思:
a.作为量词,跟在一个字符或子表达式后面表示可出现0或1次。
b.表非贪婪模式,跟在量词元字符后面,如??、*?、+?
c.在前后向查找里使用,如(?=)、(?<=)、(?!)
d.表逻辑判断、条件。

1.回溯引用条件
example_1
回溯引用条件是在前面的子表达式匹配成功的情况下才允许使用的,定义这种条件的语法是(?(backreference)true-regex)。看一个例子:


如果前面匹配到[A]则后面也必须匹配到[A]

example_2
刚刚是满足条件下执行一个表达式。条件还可以有否则表达式。用来定义这种条件的语法是(?(backreference)true-regex|false-regex)
以北美电话号码格式匹配做为例子。(123)456-7890和123-456-7890都是可接受的格式。很明显,如果有(则必须匹配到),否则要匹配到-。

正则表达式 (()?\d{3}(?(1))|-)\d{3}-\d{4}
文本 123-456-7890 (123)456-7890
匹配结果 123-456-7890 (123)456-7890
分析: (()?匹配一个可选的( 。然后(?(1))|-)判断如果(1)存在,则必须要匹配到),否则-必须被匹配到。

2.前后查找条件
e

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值