`

java正则表达式捕获组,非捕获组与注释介绍

阅读更多
正则表达式,简单部分可参加Pattern的javadoc介绍.
现在我来介绍一下捕获组,非捕获组.
注意:由于论坛发帖限制,表格中出现或的,请一律考虑成|字符
捕获组
字符描述示例
(pattern)匹配pattern并捕获结果,自动设置组号。(abc)+d匹配abcd或者abcabcd
(?<name>pattern)或(?'name'pattern)匹配pattern并捕获结果,设置name为组名。
\num对捕获组的反向引用。其中 num 是一个正整数。(\w)(\w)\2\1匹配abba
\k< name >或\k' name '对命名捕获组的反向引用。其中 name 是捕获组名。(?<group>\w)abc\k<group>匹配xabcx


使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个捕获组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。

例如:

(\d{4})-(\d{2}-(\d{2}))

1   1 2      3      32

也可以自己指定子表达式的组名。这样在表达式或程序中可以直接引用组名,当然也可以继续使用组号。但如果正则表达式中同时存在普通捕获组和命名捕获组,那么捕获组的编号就要特别注意,编号的规则是先对普通捕获组进行编号,再对命名捕获组进行编号。

例如:

(\d{4})-(?<date>\d{2}-(\d{2}))

1    1 3             2      23


非捕获组
字符 描述示例
(?:pattern)匹配pattern,但不捕获匹配结果。'industr(?:y或ies)匹配'industry'或'industries'。
(?=pattern)零宽度正向预查,不捕获匹配结果。'Windows (?=95或98或NT或2000)'匹配 "Windows2000" 中的 "Windows"不匹配 "Windows3.1" 中的 "Windows"。
(?!pattern)零宽度负向预查,不捕获匹配结果。'Windows (?!95或98或NT或2000)'匹配 "Windows3.1" 中的 "Windows"不匹配 "Windows2000" 中的 "Windows"。
(?<=pattern)零宽度正向回查,不捕获匹配结果。'2000 (?<=Office或Word或Excel)'匹配 " Office2000" 中的 "2000"不匹配 "Windows2000" 中的 "2000"。
(?<!pattern)零宽度负向回查,不捕获匹配结果。'2000 (?<!Office或Word或Excel)'匹配 " Windows2000" 中的 "2000"不匹配 " Office2000" 中的 "2000"。

非捕获组只匹配结果,但不捕获结果,也不会分配组号,当然也不能在表达式和程序中做进一步处理。

      首先(?:pattern)与(pattern)不同之处只是在于不捕获结果。

      接下来的四个非捕获组用于匹配pattern(或者不匹配pattern)位置之前(或之后)的内容。匹配的结果不包括pattern。

      例如:

(?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内的内容。如:<div>hello</div>之中的hello,匹配结果不包括前缀<div>和后缀</div>。
注释
字符描述示例
(?#comment)comment是注释,不对正则表达式的处理产生任何影响2[0-4]\d(?#200-249)或25[0-5](?#250-255或1?\d\d?(?#0-199)匹配0-255的整数
分享到:
评论

相关推荐

    精通正则表达式~~~

    精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于...

    正则表达式经典实例

    即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...

    正则表达式经典实例.pdf

    即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...

    正则表达式30分钟入门教程

    不同的环境下正则表达式的一些细节是不相同的,本教程介绍的是微软 .Net Framework 2.0下正则表达式的行为,所以,我向你介绍一个.Net下的工具Regex Tester。首先你确保已经安装了.Net Framework 2.0,然后下载Regex...

    扩展微信小程序框架功能:正则表达式

    XRegExp 是一个开源的 JavaScript 库提供一个参数化、可扩展的支持各种浏览器的正则表达式的实现库,支持附加语法、标志以及方法。 XRegExp XRegExp是一个为JS的正则表达式提供扩展功能的库, 调用之后可以弥补原生...

    C#正则表达式匹配与替换字符串功能示例

    本文实例讲述了C#正则表达式匹配与替换字符串功能。分享给大家供大家参考,具体如下: 事例一:\w+=&gt;[A-Za-z1-9_],\s+=&gt;任何空白字符,()=&gt;捕获  string text = @public string testMatchObj string s string match...

    基于PCRE2的正则表达式模块 支持Unicode-易语言

    进行匹配和替换,不同于内容替换的是这个功能允许使用 \0 \1 \2这种类型的格式字符串传入,用以匹配 完整表达式捕获、第一个子表达式捕获、第二个子表达式捕获,同理支持最大\99 假设表达式为:(\d+)*(\d+),文本...

    vscode-highlight:基于正则表达式的高级文本荧光笔。 对待办事项,注释等有用

    有迹象表明,你可能会考虑,喜欢另类的扩展,但是这是比较通用的,这可以在相同的正则表达式中应用不同的样式不同的捕获组,这是专注于做一件事,做的很好。安装请遵循的指示,或在命令面板中运行以下命令: ext ...

    editplus 代码编辑器html c++ jsp css

    这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下 解决: 在替换对话框中,启用“正则表达式”复选框 在查找内容里面输入...

    EditPlus 2整理信箱的工具

    正则表达式类 【1】 正则表达式应用——替换指定内容到行尾 【2】 正则表达式应用——数字替换----------------------------Microshaoft@CCF,jiuk2k@CCF 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】 ...

    Editplus 3[1].0

    这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下 解决: 在替换对话框中,启用“正则表达式”复选框 在查找内容里面输入...

    JAVA_API1.6文档(中文)

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    cloud-trail-hipchat-lambda:Lambda函数基于S3中的Cloud Trail日志发送HipChat消息

    云小路-hipchat-lambda Lambda函数可基于S3中的Cloud Trail日志发送HipChat消息。 基于按照此处的说明在CloudTrail,S3和Lambda中进行配置... ),但是您可以根据自己的喜好调整正则表达式,或者取消注释上面包含一些

    Java 1.6 API 中文 New

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    java api最新7.0

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    JavaAPI1.6中文chm文档 part1

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    C#入门——面向对象等,代码+注释

    第19天 01进程 02进程 03FileStream文件流 03复制文件 03正则表达式 04正则表达式下载页面图片(未实现) 第20天 01创建XML文档 02对xml文档增删改查 03.2判断是否登录成功原版 03判断是否登录成功 04Xml增删改查 ...

    ECMAScript 2018规范

    ECMAScript 2018规范。 主要包含内容: ...正则表达式: 支持 s (dotAll) 模式 Unicode 属性转义(Property Escape) 支持后行断言(Lookbehind Assertions) 命名捕获组(named capture group)

    java jdk-api-1.6 中文 chmd

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

Global site tag (gtag.js) - Google Analytics