-- Start
--更多参见:正则表达式精萃正则表达式还支持简单的条件判断结构,格式如下:
(?if then |else)
其中的 if 部分是特殊的表达式,而 then 和 else 部分是普通的正则表达式,else 部分是可选的。
1. if 部分可以测试捕获,下面是一个简单的例子。
#!/usr/bin/perl my $testText = "#test#"; if($testText =~ m/(#)?\w+(?(1)#|%)/) { print "匹配成功 #test# \n"; } $testText = "#test"; if($testText =~ m/(#)?\w+(?(1)#|%)/) { print "匹配成功 #test\n"; } else { print "匹配失败 #test\n"; }
结果如下:我们来看看其中的条件判断结构 ( ?(1) #| %) ,其中红色部分是 if 部分,绿色部分是 then 部分, 蓝色部分是 else 部分。 ?(1) 用来测试 (#)? 是否匹配了 # 号。匹配成功 #test# 匹配失败 #test
2. if 部分可以是环视结构,下面是一个简单的例子。
#!/usr/bin/perl my $testText = "num 8 is my favorite number"; if($testText =~ m/(?(?<=num )\d|\w+)/) { print "匹配成功\n"; }
上面正则表达式的意思是,如果你是\d,那么它前面必须是num 。
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-13
-- Written by ShangBo on 2012-05-12
-- End