Perl语言之所以是一种非常擅长文本处理的语言,我想很多都是由于正则表达式的缘故。Perl语言中的正则表达式功能基本是所有常用语言中最强大的,以至于很多语言设计正则表达式支持的时候都参考Perl语言的正则表达式。正则表达式描述的是一种匹配模式,换言之就是可以快速判断目标字符串是否与我们提供的模板匹配,或者快速判断目标字符串中是否含有与我们的模板匹配的部分。除了检查是否匹配之外,正则表达式还支持替换、转化等操作。概括而言,Perl的正则表达式有三种形式:
- 匹配:m//(还可以缩写为//)
- 替换:s///
- 转化:tr///
这三种形式一般都和=~(表示匹配)或者!~(表示不匹配)搭配使用。它们不仅在语法上更为简洁,还可以像双引号字符串一样解析,而不是作为普通的操作符。
匹配操作符
匹配操作符顾名思义就是用于匹配一个字符串语句的表达式,即m//,也可以直接缩写成//。需要进行匹配的字符串模板写在两个斜线中间。例如:
#!/usr/bin/perl
$text = "beforematchafter";#目标字符串
if ($text =~ /match/)#检查目标字符串中是否有match这个字符串
print "Matched";
else
print "No match";
实际上,这对斜线就是一组定界符。言外之意,我们可以用任意别的定界符替换双斜线,例如m(match)、m{match}等等都是可以的。当然,选择模式中不会出现的字符作为定界符才是明智