正则表达式--模式匹配--特殊变量(1)

 $` | $& | $’ | $1 | $2 | $n

 

>>>每一次成功的匹配了一个模式(包括替换),操作符都会把变量 $`|$&|$分别设置为匹配内容左边的内容,匹配的内容和匹配右边的文本,这个功能对字符串分解为组件很有用。

>>>为了有更好的颗粒度和提高效率,你可以用圆括弧捕捉你特别想分离出来的部分。每对圆括弧捕捉与圆括弧内的模式相匹配的子模式。圆括弧由左圆括弧的位置从左到右依次排序;对应那些子模式的子字串在匹配之后可以通过顺序的变量 $1 ,$2,$3等等获得。

 

example:

my $str = "*****bange&&&&&mantou%%%%%";

$str =~ /(bange)\S+(mantou)/; 

print "$1$2\n";         ###  bangemantou

print "<$`>$&<$'>\n";     ###  <*****>bange&&&&&mantou<%%%%%>

print "$str\n";          ###  *****bange&&&&&mantou%%%%%

 

注:

>>模式匹配是指一次匹配操作,而不是指一次匹配上的内容,比如上面的,在两个圆括弧中同时匹配上内容,但是他们仅仅属于这一次匹配操作,还有中间的\S+,都是这一次匹配的结果。也就是说//中间的所有匹配上的内容是这一次匹配操作的结果,然后依此分配三个变量的内容。

>>$`, $& , $'  和排序的变量都是全局变量,它们隐含地局部化为属于此闭合的动态范围。它们的存在直到下一次成功的匹配或者当前范围的结尾,以先到者为准。

>>一旦 Perl  认为你的程序的任意部分需要 $` , $& ,  或 $',它就会为每次模式匹配提供这些东西。这样做会微微减慢你的程序的速度。Perl 同样还利用类似的机制生成 $1 ,$2  等等,因此你也会为每个包含捕捉圆括弧的模式付出一些代价。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值