正则表达式学过好多遍了,真正用起来就忘了,还得查个半天,跟shell用起来一样。因为没有记笔记的习惯,所以好多东西每次还得重头来过。确实比较费劲。还是记录下来以后便于查询。
正则用的相当多,shell、perl、awk、grep、sed这些等等,了解的就不必说了。
注意点:正则表达式与shell的文件通配是两码事。总是搞混。在shell中键入*.pm来匹配所有以pm结尾的文件就是典型的文件名通配。使用grep类似的工具,必须用单引号将正则表达式括起来,否则会被shell当成文件名通配。*在文件名通配中代表任意字符,在正则中代表是任意个前面字符。如 rewrite规则中最常用的正则.*来代替任何字符。而不是通配中的*就可以。
正则中的两个元字符:“.” (1个字符,换行除外“\n”)、“\”(反义)
正则中的三个量词:“*”(前面字符0个或多个)、 “+”(前面字符的1个或多个)、 “?”(前面字符出现0词或1次)。
分组与引用。每个匹配式用()引起来,如/(abc)+/ 、rewrite用的(.*)后面用$n引用(n表示第几个分组,从1开始)。正则中用\n来引用。如(.)\1匹配两个相同的字符,如aa。(..)\1匹配两个字符重复一次,如abab。(.)(.)\1\2跟前面的一样,(.)(.)\2\1颠倒顺序,如abba。((.)(.)\3\2)\1颠倒顺序再重复,如abbaabba。最新表达方式是通过\g{1}类似这么来表达。
几个缩写字符集简写:\d(数字)、\w(字母加_)、\s(空白符号)。一般来说没有单个出现的,想下\d+ 、\s+等。\D、\W、\S相反的意思。
|(或)。[]字符集如[0-9]。[^]不含字符集。如[^abc]这里是不含a或者b或者c的意思。[^(abc)]
阅读(674) | 评论(0) | 转发(0) |