Perl编程-6正则表达式--匹配
Posted oddxix
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl编程-6正则表达式--匹配相关的知识,希望对你有一定的参考价值。
perl语言的强大之处就在于他的正则表达式,Perl的正则表达式的三种形式,分别是匹配,替换和转化:
匹配:m//(还可以简写为//,略去m)
替换:s///
转化:tr///
匹配
语法表示: m// (m可以忽略不写)
#!/usr/bin/perl
$bar = "I am runoob site. welcome to runoob site.";
if ($bar =~ /run/){
print "第一次匹配\n";
}else{
print "第一次不匹配\n";
}
元字符
特殊字符叫做元字符,比如点号“.”,它是任何单字符的通配符,如果要表示点号本身需要在前面加上反斜杠“\”。
*:表示前面内容的零次或多次
+: 表示匹配前一个条目一次以上
?:表示前一个内容是可有可无的
模式分组
用圆括号()来表示分组,括号里的内容表示整体。使用圆括号可以对部分字符进行重新引用和反引用。“\1”、“\2”就是在使用反向引用,反斜线后面的数字和括号的组号匹配。
$_="abba";
if ($_=m /(.)\1/){
print "It matched !"
}
#和bb匹配
$_ = "yabba dabba doo ";
if ($_=m /y(.)(.)\2\1/){
print "It matched !"
}
#和abba匹配上
如何区分哪个括号是第几组?
只要数左括号的序号就可以
$_="yabba dabba doo";
if ($_=m /y((.)(.)\3\2) d\1/){
print "It matched !"
}
#匹配到abba dabba
择一匹配
竖线(|)表示左边或者右边匹配都可以。
模式匹配修饰符
模式匹配有一些常用的修饰符,如下表所示:
正则表达式变量
perl处理完后会给匹配到的值存在三个特殊变量名:
$`: 匹配部分的前一部分字符串
$&: 匹配的字符串
$': 还没有匹配的剩余字符串
锚位
脱字符(^)表示字符串的开头
美元符($)表示字符串的结尾
\b 表示单词边界锚位,匹配任何单词的首尾
\B表示非单词边界锚位
绑定操作符=~
默认情况下模式匹配的对象是$_,绑定操作符=~则可以用右边的模式匹配左边的字符串。
捕获变量
使用圆括号表示不同的模式组时,也启动了正则表达式处理引擎的捕获功能,有几个括号就进行几次捕获,捕获的内容暂存在2变量中,如果想关闭圆括号的捕获功能,则使用(?:)形式
以上是关于Perl编程-6正则表达式--匹配的主要内容,如果未能解决你的问题,请参考以下文章