Perl语言的文字处理模式(Regular Expression)
如果在Unix中曾经使用过sde、awk、grep这些指令的话,相信对于Perl语言中的文字处理模式(Regular Expression) 应该不会感到陌生才对。在Perl语言中因为有这个功能,所以对于字符串的处理能力是非常强有力的。Regular Expression可视为用来处理字符串的一种模式(pattern),其使用的格式为/pattern/。在Perl语言的程序设计中,经常可以看得到类似语法的应用,在CGI程序设计中也不例外。只要能够善用文字处理模式的话,要处理任何难的字 符串皆可迎刃而解,在本章中笔者会用深入浅出的方式来介绍Regufar Expression的用法。
一、文字处理(RegularExpression)的常用语法
以下是文字处理模式中,/pattern/常用到的语法:
/pattern/ 说明除了换行字符/n外,找寻只有一个字符的字符串 x? 找寻0个或是1个x字符 x* 找寻0个或是0个以上的x字符 .* 找寻0个或是0个以上的任何字符 x+ 找寻1个或是1个以上的x字符 .+ 找寻1个或是1个以上的任何字符 {m} 找寻刚好是m各个数指定的字符 {m,n}找寻在m个个数以上、n个个数以下指定的字符 {m,} 找寻m个个数以上指定的字符 [] 找寻符合[]内的字符 [^] 找寻不符合[]内的字符 [0-9] 找寻符合0到9的任何一个字符[a-z] 找寻符合a到z的任何一个字符 [^0-9] 找寻不符合0到9的任何一个字符 [^a-z]找寻不符合a到z的任何一个字符 ^ 找寻字符串开头的字符 $ 找寻字符串结尾的字符 d找寻一个digit(数字)的字符,和[0-9]语法一样 d+ 找寻一个digit(数字)以上的字符串,和[0-9]+语法一样 D 找寻一个non-digit(非数字)的字符,和[^0-9]语法一样 D+ 找寻一个non-digit(非数字)以上的字符串,和[^0-9]+语法一样 w 找寻一个英文字母或是数值的字符,和[a-zA-Z0-9]语法一样 w+ 找寻一个以上英文字母或是数值的字符串,和[a-zA-Z0-9]+语法一样 W 找寻一个非英文字母或是数值的字符,和[^a-zA-Z0-9]语法一样 W+ 找寻一个以上非英文字母或是数值的字符串,和[^a-zA-Z0-9]+语法一样 s 找寻一个空白的字符,和[ntrf]一样 s+ 找寻一个以上空白的字符,和[ntrf]+一样S 找寻一个非空白的字符,和[^ntrf]一样 S+ 找寻一个以上非空白的字符,和[^ntrf]+一样 b 找寻一个不以英文字母、数值为边界的字符串 B 找寻一个以英文字母、数值为边界的字符串 a|b|c 找到符合a字符或是b字符或是c字符的字符串 abc找到一个含有abc的字符串 (pattern)。
()这个符号会记忆所找寻到的字符串,是一个很实用的语法 第一个()内所找到的字符串变成$1这个变量或是1变量 第二个()内所找到的字符串变成$2这个变量或是2变量 以此类推,笔者会在下一个小节中详细介绍它的用法/pattern/i i这个参数是代表忽略英文大小谢的意思,也就是在找寻字符串的时候,不会去考虑英文的大小写 如果要在pattern模式中找寻一个有特殊意义的字符,要在这个字符前加上这个符号,这样才会让这个特殊字符失效。