关于正则
关于正则 【评论】 【返回】






本文作者:Edward
阅读次数:1859
发布日期:2011-02-14
 
语法             含义
  c          匹配任意非特殊字符
  .          匹配任意字符
  \          用在特殊字符前面代表特殊字符本身,用在 <, >, (, ), and 1,...,9, 的含义在下面描述
[c...]      一对方括号中包含一些字符将匹配括号中的任意一个字符,如果第一个字符是 ^ 则表示不匹配括号中的所有字符,[a-z]表示匹配a到z之间的任一字符,"-”表示范围。
  *          用在一个以上描述的字符或pattern后表示匹配该字符或pattern0次或多次。
  +          类似*,区别在于匹配至少一次
\(..\)      如果包含在这个符号中的字符串匹配上了,被匹配的字符可以被提取出来(最多支持9中匹配)
\n          和上一个符号对应,反斜杠后跟一个数字将可以提前到上一个符合保留的字符串
\<...\>     这个符号表示完全匹配一个字符串的开始和结尾
rs          2个正则表达式的组合将尽可能多的匹配r并匹配一个s
^, $        ^表示字符串的开始, $表示字符串的结尾

常用正则匹配函数
rexCompile,rexExecute,rexMatchp,rexSubstitute


Perl里面正则的几大原则

· 原则1:正则表达式有三种不同形式(匹配(字符/串)(m/ /),替换(字符串)(s/ / /eg)和转换(大小写)(tr/ / /)), 一般都和 =~ 或 !~ 搭配使用(其中 "=~" 表示相匹配,"!~" 表示不匹配,并在左侧有待处理的标量变量。如果没有该变量和 =~ !~ 操作符,则默认为处理 $_ 变量中的内容)。
· 原则2:正则表达式仅对标量进行匹配( $scalar =~ m/a/; 可以工作; @array =~ m/a/ 将把@array作为标量对待,因此可能不会成功)。
· 原则3:正则表达式匹配一个给定模式的最早的可能匹配。缺省时,仅匹配或替换正则表达式一次( $a = 'string string2'; $a =~ s/string/ /; 导致 $a = 'string 2')。
· 原则4:正则表达式能够处理双引号所能处理的任意和全部字符( $a =~ m/$varb/ 在匹配前把varb扩展为变量;如果 $varb = 'a' $a = 'as',$a =~ s/$varb/ /; 等价于 $a =~ s/a/ /; ,执行结果使 $a = " s" )。
· 原则5:正则表达式在求值过程中产生两种情况:结果状态和反向引用: $a=~ m/pattern/ 表示 $a 中是否有子串 pattern 出现,$a =~ s/(word1)(word2)// 则“调换”这两个单词。
· 原则6:正则表达式的核心能力在于通配符和多重匹配运算符以及它们如何操作。$a =~ m/\w+/ 匹配一个或多个单词字符;$a =~ m/\d/" 匹配零个或多个数字。
· 原则7:如果欲匹配不止一个字符集合,Perl使用 "|" 来增加灵活性。如果输入 m/(cat|dog)/ 则相当于“匹配字符串 cat 或者 dog。
· 原则8:Perl用 (?..) 语法给正则表达式提供扩展功能。(这一点请同学们课后看相关资料)
 
Processed in 0.052458 second(s)