正则表达式最常用知识点总结

预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9] 注意:“字符”
\W 非单词字符:[^\w]

边界匹配器
^ 行的开头
$ 行的结尾

1、默认是贪婪的
2、在通配符*,+等后面加上?,就是非贪婪的。 非贪婪就是在匹配时,用尽量少的字符使匹配成功。
例子:匹配超链接
1、<a.*<\/a>贪婪的,所有的<a和</a>之间都被匹配到。因此这样匹配的是第一个超链接的<a开通到最后一个超链接的结尾</a>。
2、<a.*?<\/a>非贪婪的,正确匹配一个超链接,<a和</a>之间的字符尽量少的情况下使匹配成功。
分组:用()对正则表达式进行分组,如果自己没有分组,那么默认值只有一个组,也就是整个正则表达式
java中,用group(index)访问指定组
JS中,通过exeu返回的数组中的下标值进行访问指定组
组的下标,默认全局的组是0,其它的以"()"在正则表达式内出现的从左到右的顺序来划分。

在JS中:
match(r)是String方法
exec(s)和test(s)是RexExp的方法
exec方法返回一个数组,每一项是一个分组匹配到的内容。
JS中定义正则表达式两种方式:"/XXXX/gmi可选项" 和 new RexExp("XXXX","gmi可选项")
可选项中:g表示全局扫描,如果不加,那么将一直匹配第一个匹配到的。
   加了g选项后,每一次匹配后,就会往下匹配。当扫描不到匹配的字符时,则返回null。
例子:
var p = new RegExp("<a.*?<\/a>","g");
//此处如果没有加"g",则匹配的永远是<a href=http://www.google.cn>谷歌</a>
var str="其他<a href=http://www.google.cn>谷歌</a>其他。。。<a href=http://www.baidu.com>百度</a>其它";
var url = p.exec(str);
while(url != null){
document.write(url+"<br/>");
url = p.exec(str);
}

你可能感兴趣的:(正则表达式,百度,F#)