匹配的起始位置 \G

-- Start

\G 通常应用于迭代操作中,它指示上次匹配的结束位置或本次匹配的开始位置。第一次迭代时,\G 匹配字符串的开始。如果在迭代的过程中正则表达式不能匹配成功,\G 会重新指向字符串的开始位置。但是如果我们指定了 Perl 的 /c 修饰符,那么即使正则表达式匹配失败了,\G 将不会重新设置。下面是一个简单的例子。

#!/usr/bin/perl

my $testText = "I love regular expression.";   # 测试文本

while(not $testText =~ m/\G\z/gc)              # 到达文本末尾就结束
{
	if($testText =~ m/\G(reg\w+\b)/gc)     # 查找以 reg 开头的单词
	{ 
		print "$1\n";                  # 反向引用,$1 引用括号中匹配的内容
	} 
	elsif($testText =~ m/\G(exp\w+\b)/gc)  # 查找以 exp 开头的单词
	{ 
		print "$1\n";
	}
	elsif($testText =~ m/\G(.)/gc)         # 跳过一个字符,没有这个分支会死循环
	{
		print "$1\n";
	}
}

虽然上面这个例子没有实用价值,但我们可以很容易的扩展,我们可以从文件中读取测试文本,多个 if 分支可以分析文件并把结果打印的新的文件中。

--更多参见:正则表达式精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-12
-- Written by ShangBo on 2012-05-12
-- End


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值