非捕获组的详解
来源:互联网 发布:btr60装甲车数据 编辑:程序博客网 时间:2024/05/02 04:47
以 (? 开头,) 结尾的都称为非捕获组,在匹配完成后在内存中不保留匹配到的字符。
非捕获组的应用比较复杂,这里只能简单地说一下它们的意思。
(?:X) X,作为非捕获组
与捕获组 ( ) 的意思一样也是将其作为一组进行处理,与捕获组的区别在于不捕获匹配的文本,
仅仅作为分组。
比如:要匹配 123123 这个,就可以写为 (123)/1 使用反向引用,这时只能用捕获组,在匹配
123 后会保留在内存中,便于反向引用,而 (?:123) 在匹配完后则不会保留,区别仅在于此。
(?idmsux-idmsux) Nothing,但是将匹配标志i d m s u x on - off
用于标志匹配,比如:表达式 (?i)abc(?-i)def 这时,(?i) 打开不区分大小写开关,abc 匹配
不区分大小地进行匹配,(?-i) 关闭标志,恢复不区分大小写,这时的 def 只能匹配 def
(?idmsux-idmsux:X) X,作为带有给定标志 i d m s u x on - off
与上面的类似,上面的表达式,可以改写成为:(?i:abc)def,或者 (?i)abc(?-i:def)
(?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?=X) 表示当前位置(即字符的缝隙)后面允许出现的字符,比如:表示式 a(?=b),在字符串为
ab 时,可能匹配 a,后面的 (?=b) 表示,a 后面的缝隙,可以看作是零宽度。
(?!X) 表示当前位置后面不允许出现的字符
(? <=X) X,通过零宽度的正 lookbehind
(? <!X) X,通过零宽度的负 lookbehind
这两个与上面两个类似,上面两个是向后看,这个是向前看
(?>X) X,作为独立的非捕获组
匹配成功不进行回溯,这个比较复杂,也侵占量词“+”可以通用,比如:/d++ 可以写为 (?>/d+)。
来自,
http://topic.csdn.net/u/20080503/01/3c82b040-43b9-4b44-847d-07b366285957.html?seed=1400661853
- 非捕获组的详解!
- 非捕获组的详解
- 非捕获组详解
- java正则表达式 非捕获组详解
- java正则表达式 非捕获组详解
- java正则表达式 非捕获组详解
- java正则表达式 非捕获组详解
- java正则表达式非捕获组详解
- java正则表达式非捕获组详解
- java正则表达式 非捕获组详解
- java正则表达式 非捕获组详解
- 正则表达式的非捕获组
- 正则表达式- 捕获组 非捕获组
- 非捕获组 non-capturing
- 正则表达式中的非捕获组(non-capturing)的用法
- 复习下Java正则表达式的捕获组和非捕获组
- ue中使用正则表达式来替换-正则表达式-的捕获组与非捕获组
- 关于捕获组和非捕获组得区别和侵占式表达式的作用
- c#后台调用前台JS
- 把金额转换为大写
- in和exists的区别与SQL执行效率分析
- 并行计算相关的顶级会议
- canvas学习资源
- 非捕获组的详解
- EL表达式和 JSTL标签
- CMD TYPE 命令合并两个文件
- 八卦
- JAVA 获得某个月里共有几天
- 用PHP的ob_start(); 控制您的浏览器cache!
- Programming Windows Security the code
- 用treeview从数据库中读取子节点
- 什么是COM组件