1 表达式修饰符if、unless、while、untile、foreach
2 DATA文件句柄:__DATA__标志着脚本的逻辑结束,并打开DATA文件句柄用于读取。
3 m运算符:如果包围正则表达式的定界符是斜杠,m运算符是可选的;如果忙乱变了定界符,则是要求的。
格式:/Regular Expression/ or m#Regular Expression# or m(Regular expression)
匹配修饰符:i-大小写无关 g-全局匹配 x-允许注释与空白 o-只编译模式一次
s-嵌入新行时,将字符串作为单行处理 m-将字符串作为多行处理
4 给特殊标量$&赋值在上一次成功搜索中匹配的字符串。$'(备份引号)保存在匹配模式之前找到的内容,而$'(直接引号)保存模式匹配之后找到的内容。
5 s运算符和替换,格式:s/old/new/ or s(odl)/new/ or ...
替换修饰符:以上提到的+e将夫换端作为表达式求值
6 格式绑定运算符:
前面在默认模式空间$_变量上的模式搜索是隐式完成的,如果不将字符串存储在变量$_中,而且需要对字符串过行匹配或替换,就要使用模式绑定运算符=~或!~。它们还在tr函数中用于字符串翻译。
7 用于单字符的元字符:
.-除新行外的任何字符 [a-z0-9]任何单字符
[^a-z0-9]不在集合中的任何单字符 /d-一个数字(大写为非数字)
/w-数字(字)字符(大写为非数字字母(非字)字符
注意:
s修饰符:点元字符和新行
脱字符^
POSIX字符类:用于确保跨平台可移植的工业标准(求反字符,只要在字符串前加^)
[:alnum:]字母数字字符 [:alpha:]字母字符
[:ascii:]0-127数值字符 [:cntrl:]控制字符
[:digit:]数字 [:graph:]字母数字标点以外的非空字符
[:lower:]小写 [:print:]与[:graph:]同,但有空格
[:punct:]标点 [:space:]所有的空白字符
[:upper:]大写 [:word:]字母或下划线
[:xdigit:]十六进制
8 白空元字符:(大写为非)
/s-白空字符 /n新行 /r回车
/t制表位 /h进纸
9 关闭贪婪性的元字符。通过在贪婪限定符之后放置问号,就关闭了贪婪性,搜索在第一个匹配后结束,而不是到最后一个。
10 锚点:
^行或字符串的开头 $行或字符串的末尾
/A只匹配字符串的开头 /Z匹配字符串或行的末尾
/z只匹配字符串的末尾 /G匹配前面的m//g离开之处
/b匹配边界(大写为非边界)
m修饰符用于控制$和^锚元字符的行为。含有新行的字符串作为多行对待。
11 记忆或捕获:如果正则表达式包含在括弧中,则创建子模式。子模式保存在特殊编号的标量变量中,从$1开始。这些变量以后用于程序并保持到发生其化成功的模式匹配,些是将其清除。即使想要控制贪婪元字符或前一例子中展示的交替行为,保存子模式也具有副作用.可以使用?:元字符取消子模式的捕获。
例:
$fruit="apple pears peaches plums";
$fruit=~/(.*)/s(.*)/s(.*)/;
print "$1/n";
print "$2/n";
print "$3/n";
print "-"x39,"/n";
$fruit="apples pears peaches plums";
$fruit=~/(.*?)/(.*?)/s(.*?)/;
print "$1/n";
print "$2/n";
print "$3/n";
(Output)
apples pears
peaches
plums
-----------------------
apples
pears
peaches
12 前后查找元字符:
/pattern(?=pattern)/正向前查找 /pattern(?!pattern)/负向前查找
(?<=pattern)/pattern/正向后查找 (?<!pattern)/pattern/负向后查找
13 tr或y函数:以一种一对一的对应,将搜索字符串中的字符转换成替换字符串中的字符。返回其替换的字符数。d选项删除搜索字符串,c选项补充搜索字符串,s选项称为挤压选项。
14 统一字符编码Unicode:是解决这个问题的一种方式,通过创建新的字符集,称为utf8或uft16,其中的字母不限制为一字节。(先用use8包含)(如/p的p大写,则意义相反)
/p{IsASCII}ASCII字符 /p{Cntr}控制字符
/p{IsDigit} /p{IsGraph}字母数字或标点字符 /p{IsLower}
/p{IsPrint}字母数字或标点字符或空格 /p{IsPunct}标点 /p{IsSpace}白空
/p{IsUpper}大写字母 /p{IsWord}字母数字字符或下划线 /p{IsXDigit}十六进制
|