正则表达式笔记

正则表达式要注意的问题

   

  1. 所谓正则表达式匹配,匹配的是字符(或者是边界),你可能认为 this 匹配的是this这个单词,有些情况下可以这么理解,但是更为正确的理解是:先匹配t这个字符,接下来匹配h字符,i字符,s字符,请一定要以字符的思维来思考正则表达式而不是以字符串来思考正则。
  2. 对字符组(也就是在[...]里)的字符来,许多的元字符是没有意义的,例如.*?+等字符,在[.*?+]意义为匹配.*?+中的任何一个字符。
  3. 在字符组中 号,代表范围,当且仅当 – 号不在第一个位置上,例如:/[-]/代表匹配 – 字符,而[1-9]代表匹配从一到九的字符中的任何一个字符,这里 则表示范围。
  4. 尽量不要用 .*,注意只是尽量,因为 .* 代表匹配任意字符,常常用 .* 得不到你想要的匹配结果。例如匹配括号的正则表达式/ \(.*\)/来匹配(a)没有问题
    但是如果是((a)bc)就不行了,因为上述表达式也匹配((a),所以这是不正确的。
  5. 因为正则表达式是字符匹配,而空格也是一个字符,所以字符匹配的时候,不能忽略空格的情况。 例如/[a b]/,你可能认为匹配a字符或者b字符,其实还应该包含一个空格字符。
  6. 关于边界的匹配,最为熟悉的边界有^$(注:这两个字符也只是在开头和结尾是元字符)分别带表字符的开头和结尾,还有一个比较常用的匹配字的边界,也就是/b。例如我们要匹配the这三个连续的字符,并且替换它。如果直接用/the/的话,那么他也会替换these中the。如果不想这样只要改写成 /\bthe\b/添加边界就可以了。这里特别强调一点:\b等匹配边界的正则串,实际不匹配任何字符(包括空格)。例如/^$/实际不匹配任何字符。

    这些天看《精通正则表达式》一书,感觉正则真的很好,很强大。做个笔记以备忘。

    注:正则表达式用两个双斜线括起来,字体为黑体

posted @ 2009-01-06 09:49  松涛  Views(191)  Comments(0)    收藏  举报