查看“正则表达式 分组”的源代码
←
正则表达式 分组
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://www.bilibili.com/video/BV1Eq4y1E79W?p=13 {| class="wikitable" !常用分组构造形式 !说明 |- |(pattern) |非命名捕获。捕获匹配的子字符串。 编号为零的第一个捕获是由整个正则表达式模式匹配的文本,其它捕获结果则根据左括号的顺序从1开始自动编号 |- |(?<name>pattern) |命名捕获。将匹配的子字符串捕获到一个组名称或编号名称中。 用于name的字符串不能包含任何标点符号,并且不能以数字开头。 可以使用单引号替代尖括号,例如(?'name') |} === 对比示例:应用分组前 === <syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp07 { public static void main(String[] args) { String content = "hanshunping s7789 nn1189han"; String regStr = "\\d\\d\\d\\d"; //匹配4个数组的字符串 Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:7789 找到:1189 </syntaxhighlight> === 示例:应用分组 === <syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp07 { public static void main(String[] args) { String content = "hanshunping s7789 nn1189han"; /* * 下面就是非命名分组 * 说明 * 1、matcher.group(0) 得到匹配到的字符串 * 2、matcher.group(1) 得到匹配到的字符串的第1个分组 * 3、matcher.group(2) 得到匹配到的字符串的第2个分组 */ String regStr = "(\\d\\d)(\\d\\d)"; //匹配4个数字字符的字符串 Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); System.out.println("找到第1个分组的内容:" + matcher.group(1)); System.out.println("找到第2个分组的内容:" + matcher.group(2)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:7789 找到第1个分组的内容:77 找到第2个分组的内容:89 找到:1189 找到第1个分组的内容:11 找到第2个分组的内容:89 </syntaxhighlight> === 示例:在"hanshunping s7789 nn1189han" 匹配 "(\\d\\d)(\\d)(\\d)" === <syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp07 { public static void main(String[] args) { String content = "hanshunping s7789 nn1189han"; /* * 下面就是非命名分组 * 说明 * 1、matcher.group(0) 得到匹配到的字符串 * 2、matcher.group(1) 得到匹配到的字符串的第1个分组 * 3、matcher.group(2) 得到匹配到的字符串的第2个分组 */ String regStr = "(\\d\\d)(\\d)(\\d)"; //匹配4个数字字符的字符串 Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); System.out.println("找到第1个分组的内容:" + matcher.group(1)); System.out.println("找到第2个分组的内容:" + matcher.group(2)); System.out.println("找到第3个分组的内容:" + matcher.group(3)); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:7789 找到第1个分组的内容:77 找到第2个分组的内容:8 找到第3个分组的内容:9 找到:1189 找到第1个分组的内容:11 找到第2个分组的内容:8 找到第3个分组的内容:9 </syntaxhighlight> === 示例:通过命名分组 === <syntaxhighlight lang="java"> import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegExp07 { public static void main(String[] args) { String content = "hanshunping s7789 nn1189han"; /* * 命名分组:即可以给分组取名 */ String regStr = "(?<g1>\\d\\d)(?<g2>\\d\\d)"; //匹配4个数字字符的字符串 Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到:" + matcher.group(0)); System.out.println("找到第1个分组的内容:" + matcher.group(1)); System.out.println("找到分组g1的内容:" + matcher.group("g1")); System.out.println("找到第2个分组的内容:" + matcher.group(2)); System.out.println("找到分组g2的内容:" + matcher.group("g2")); } } } </syntaxhighlight><syntaxhighlight lang="console"> 找到:7789 找到第1个分组的内容:77 找到分组g1的内容:77 找到第2个分组的内容:89 找到分组g2的内容:89 找到:1189 找到第1个分组的内容:11 找到分组g1的内容:11 找到第2个分组的内容:89 找到分组g2的内容:89 </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帮助
工具
链入页面
相关更改
特殊页面
页面信息