前言
本文主要记录perl学习过程中的正则表达式。
7 正则表达式
# 正则匹配
$_ = "my name is zhangsan!";
if(/zhangsan/) {print "find zhangsan\n";} else {print "not find zhangsan\n";} # find zhangsan
7.1 元字符(点)
# 元字符 点 匹配任意一个字符, 不包括\n
$_ = "my name is zhan san!";
if(/zhan.san/) {print "find zhan san\n";} else {print "not find zhan san\n";} # find zhan san
7.2 量词(星号 加号 问号)
# 元字符量词 点星号 匹配任意多个字符
$_ = "my name is zhang bai san!";
if(/zhan.*san/) {print "find zhan bai san\n";} else {print "not find zhan bai san\n";} # find zhan bai san
# 元字符量词 点加号 匹配一个及其以上字符
$_ = "my name is zhansan!";
if(/zhan.+san/) {print "find zhansan\n";} else {print "not find zhansan\n";} # not find zhansan
# 元字符量词 点问号 匹配有一个或零个字符
$_ = "my name is zhansan!";
if(/zhan.?san/) {print "find zhansan\n";} else {print "not find zhansan\n";} # find zhansan
7.3 模式分组
#模式分组
$_ = "a b a b ";
# \g{1}表示重复第一个匹配 \g{2}表示重复第二个匹配
if(/(..)(..)\g{1}\g{2}/) {print "find out\n";} else {print "not find out\n";} # find out
7.4 择一匹配
#择一匹配
$_ = "you and me";
#匹配and和or
if(/you ((and)|(or)) me/) {print "find out\n";} else {print "not find out\n";}# find out
$_ = "you g me";
#匹配任意字母
if(/you [a-zA-Z] me/) {print "find out\n";} else {print "not find out\n";}# find out
#匹配除abcdefg外的字符,脱字符^取补集
if(/you [^abcdefg] me/) {print "find out\n";} else {print "not find out\n";}#not find out
7.5 字符集
$_ = "I have 88 dollar";
#匹配一个或者多个数字
if(/have [0-9]+ dollar/) {print "find out\n";} else {print "not find out\n";}# find out
$_ = "you g me";
#匹配任意数字字母下划线
if(/you \w me/) {print "find out\n";} else {print "not find out\n";}# find out
#匹配任意数字
if(/you \d me/) {print "find out\n";} else {print "not find out\n";}# not find out
#匹配任意数字外的字符相当于 ^\d
if(/you \D me/) {print "find out\n";} else {print "not find out\n";}# find out
#匹配任意数字和非数字,包括\n
if(/you \d\D me/) {print "find out\n";} else {print "not find out\n";}# find out
#匹配任意空格
if(/you \s me/) {print "find out\n";} else {print "not find out\n";}# not find out
总结
本文主要记录一下perl中正则匹配的用法。