正则表达式中的位置匹配

[b]正则表达式的位置匹配[/b]

位置匹配用来解决在什么地方进行字符串匹配操作的问题。在实际应用中需要对某段文本的特

定位置进行匹配,这时就需要用的正则表达式的"位置匹配"。

为了明确说明先看一实例,文本: You shouldn't let that cat scattered kids' food all over the room.

将文本中的cat 换成 dog, 需要先找到cat. 一般写法的正则表达式是cat, 但是如果是这样的话,结果就变得没有意义如下:

You shouldn't let that dog sdogtered kids' food all over the room.

能够正确解决该问题的办法只有一个: 使用边界限定符,也就是在正则表达式中利用一些特

殊的元字符来表明我们想让匹配操作在什么位置(边界)发生。


1. 单词边界(最常用的边界)

即由限定符\b指定的单词边界。 \b 用来匹配一个单词的开始或者结尾。


通过正则表达式在文本中完整的匹配一个单词的做法是在该单词的前后\b.例如想匹配单词cat ,正则写法为: \bcat\b


\b 匹配的是这样的一个位置, 这个位置位于一个能够用来构成单词的字符即\w和一个不能用来构成单词的字符即\W之间。

\b 匹配且只匹配一个位置,不匹配任何字符。


cap 会匹配cap capable cape white-cap等等;

\bcap会匹配cap capable cape

cap\b会匹配white-cap

如果想表明不匹配一个单词边界,使用\B。


2. 字符串边界

单词边界可以用来进行与单词有关的位置匹配(单词的开头、单词的结束、整个单词,等等); 字符串边界有着类似的用途,只不过是用来进行于字符串有关的位置匹配而已(字符串开头/结尾)

(1) 一个是用雷定义字符串开头的元字符^

注: \在前面提到个可以用来作为对字符集"求非",如[^a-z] 或者^\d

但是如果是在一个字符集和的外面并位于一个模式的开头,^讲匹配字符串的开头。


(2) 一个是用来定义字符串结尾的元字符$


3.分行匹配模式


有许多正则表达式都支持使用一些特殊的元字符去改变另外一些元字符行为的做法,用来启用分行匹配模式的(?m)记号就是一个能改变其它元字符行为的元字符序列。

在分行匹配模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置(该位置是不可见的)。

$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。


在使用时,(?m)必须出现在整个模式的最前面。


例如: (?m)^\s*//.*$ 用来查找JS中所有的单行注释。 注意:此时换行符将被视为一个字符串分隔符。

[b]小结:[/b]

正则表达式不仅可以用来匹配任意长度的文本块,还可以用来匹配出现在字符串中特定位
置的文本。
\b 用来指定一个单词的边界;
^ $用来指定字符串边界;如果和(?m)配合使用,^$还将匹配在一个换行符出开头或结束的

字符串,此时,换行符讲被视为一个字符串分隔符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值