查看“正则表达式 非捕获分组”的源代码
←
正则表达式 非捕获分组
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://www.bilibili.com/video/BV1Eq4y1E79W/?p=14 {| class="wikitable" !常用分组构造形式 !说明 |- |(?:pattern) |匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。 这对于用 "or"字符(|)组合模式部件的情况很有用。 例如,'industr(?:y|ies)' 是比 'industry|industries' 更经济的表达式。 |- |(?=pattern) |它是一个非捕获匹配。 例如,'Windows (?=95|98|NT|2000)' 匹配 "Windows 2000" 中的 "Windows", 但不匹配 "Windows 3.1" 中的 "Windows"。 |- |(?!pattern) |该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。 它是一个非捕获匹配。例如,'Windows (?!95|98|NT|2000)' 匹配 "Windows 3.1" 中的 "Windows",但不匹配 "Windows 2000"中的 "Windows" |} '''<big>注意:使用非捕获分组就不能再通过 matcher.group() 获得子串</big>''' === 对比示例:在 "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello" 中匹配 "韩顺平教育|韩顺平老师|韩顺平同学" === <syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp08 { public static void main(String[] args) { String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello"; String regStr = "韩顺平教育|韩顺平老师|韩顺平同学"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:韩顺平教育 找到:韩顺平老师 找到:韩顺平同学 </syntaxhighlight> === 更经济的非捕获分组示例:在"hello韩顺平教育 jack韩顺平老师 韩顺平同学hello"中匹配"韩顺平(?:教育|老师|同学)" === <syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp08 { public static void main(String[] args) { String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello"; String regStr = "韩顺平(?:教育|老师|同学)"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:韩顺平教育 找到:韩顺平老师 找到:韩顺平同学 </syntaxhighlight> === 示例:在"hello韩顺平教育 jack韩顺平老师 韩顺平同学hello"中匹配"韩顺平(?=教育|老师)" === 要求:只匹配韩顺平教育和韩顺平老师的韩顺平,不匹配韩顺平同学的韩顺平<syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp08 { public static void main(String[] args) { String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello"; String regStr = "韩顺平(?=教育|老师)"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:韩顺平 找到:韩顺平 </syntaxhighlight> === 示例:在"hello韩顺平教育 jack韩顺平老师 韩顺平同学hello韩顺平学生"中匹配"韩顺平(?!教育|老师)" === 要求:匹配 韩顺平教育和韩顺平老师之外的其他韩顺平<syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp08 { public static void main(String[] args) { String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello韩顺平学生"; String regStr = "韩顺平(?!教育|老师)"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:韩顺平 找到:韩顺平 </syntaxhighlight>
返回至
正则表达式 非捕获分组
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息