Java 正则表达式分组匹配

编程入门 行业动态 更新时间:2024-10-12 05:44:22

Java <a href=https://www.elefans.com/category/jswz/34/1770561.html style=正则表达式分组匹配"/>

Java 正则表达式分组匹配

前几篇文章都是简单判断是否满足匹配规则,当需要提取匹配结果时就用到分组匹配

分组匹配 可以判断是否满足正则表达式,然后提取出子串。

有些时候电话号码是以 123-4567-8899 这样显示的,我们要判断某个字符串是这种形式的并分别提起三段数字。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexDemo {public static void main(String[] args) {Pattern p = Patternpile("(\\d{3})\\-(\\d{4})-(\\d{4})");Matcher m = p.matcher("123-4567-8899");if (m.matches()) {String s0 = m.group(0);String s1 = m.group(1);String s2 = m.group(2);String s3 = m.group(3);System.out.println("s0:"+s0);System.out.println("s1:"+s1);System.out.println("s2:"+s2);System.out.println("s3:"+s3);} else {System.out.println("error");}}}

结果,

s0:123-4567-8899
s1:123
s2:4567
s3:8899

Matcher.group(index) 方法,

  • 参数传 0 表示 整个正则表达式匹配到的字符串 。
  • 参数传 1 表示第 1 个子串,
  • 参数传 2 表示第 2 个子串。
  • 参数传 n 表示第 n 个子串。(注意子串数量,防止数组越界)

注意这两种写法是不同的,

Pattern p = Patternpile("(\\d{3})\\-(\\d{4})-(\\d{4})");// 写法1
Pattern p = Patternpile("\\d{3}\\-\\d{4}-\\d{4}");// 写法2
  • 写法1 :正确的,每个子串用 () 包起来,共 3 个子串。调用 Matcher.group(index) 传 0、1、2、3 都正常。
  • 写法2 :只满足 m.matches() ,子串没有用 () 包起来,调用 Matcher.group(index) 只能传 0,
    否则报错 java.lang.IndexOutOfBoundsException: No group 1

更多推荐

Java 正则表达式分组匹配

本文发布于:2023-11-16 17:47:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1629880.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:正则表达式   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!