全面分析Linux正则表达式(五)

在前面几篇文章中,我们介绍了Linux正则表达式的子模式,逆向引用和量词,在这篇文章里,我们将重点介绍正则表达式中的断言(Assertions)。 Linux正则表达式断言可能开始理解起来有些困难,我们应该加以重点分析。

断言(Assertions)

断言(Assertions)是在目标字符串的当前匹配位置进行的一种测试但这种测试并不占用目标字符串,也即不会移动模式在目标字符串中的当前匹配位置。

读起来似乎有点拗口,我们还是举几个简单的例子。

两个最常见的断言是元字符“^”和“$”,它们检查匹配模式是否出现在行首或行尾。

我们来看这个模式/^/d/d/d$/,试着用它来匹配目标字符串“123”。“/d/d/d”表示三个数字字符,匹配了目标字符串的三个字符,而模式中的^和$分别表示这三个字符同时出现在行首和行尾,而它们本身并不与目标字符串中的任何字符相对应。

其它还有一些简单的断言/b, /B, /A, /Z, /z,它们都以反斜线开头,前面我们已经介绍过反斜线的这个用法。这几个断言的含义如下表。

断言 含义
/b 字分界线
/B 非字分界线
/A 目标的开头(独立于多行模式)
/Z 目标的结尾或位于结尾的换行符前(独立于多行模式)
/z 目标的结尾(独立于多行模式)
/G 目标中的第一个匹配位置


注意这些断言不能出现在字符类中,如果出现了也是其它的含义,例如/b在字符类中表示反斜线字?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值