正则表达式

原创
2018/02/02 10:34
阅读数 31

.*?与.+?
 ?在 + 和 * 后面表示非贪婪
+ 表示重复前面的一次及以上
* 表示重复前面的0次及以上

(?:pattern) :匹配pattern但不获取匹配的字符串,也就是说这是一个非获取匹配,不存储匹配的子字符串用于向后引用 ,这种形式的匹配需要自己进一步研究

例如正则: nh\t生于(?:\tnt)+
nh    生于    nt    nt    nt    wp    ns    n    wp    nt
nh    生于    nt   wp    ns    n    wp    nt

以上红色部分表示匹配部分

 

3、比较(X)和(?:X)

    比较(X)和(?:X), 前者是捕获分组,后者不捕获,区别在于正则表达式匹配输入字符串之后所获得的匹配的(数)组当中没有(?:X)匹配的部分;
比如

var m = "abcabc".match(/(?:a)(b)(c)/)
//结果 ["abc", "b", "c"]
// m[0] 是/(?:a)(b)(c)/匹配到的整个字符串,这里包括了a
// m[1] 是捕获组1,即(b)匹配的子字符串substring or sub sequence
// m[2] 是捕获组2,即(c)匹配到的

如果这样

var m = "abcabc".match(/(a)(b)(c)/)
//结果 ["abc", "a", "b", "c"]

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部