zoukankan      html  css  js  c++  java
  • 一个 Java 正则表达式例子

    今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看。正好学习 Java 正则表达式,对 group 多留意了一下。

    上代码:

    import java.util.regex.*;
    
    class RegexExample2{
        public static void main(String[] args) {
            String content = " /udisk/123 /udisk/1 /udisk/2";
    
            String pattern = "\s(/udisk/[1-9]*)";
    
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(content);
    
            while(m.find()) {
                System.out.println("Find subString group(0): " + m.group(0));
                System.out.println("Find subString group(1): " + m.group(1));
                System.out.println("=======================");
            }
        }
    }

    打印:

    Find subString group(0):  /udisk/123
    Find subString group(1): /udisk/123
    =======================
    Find subString group(0):  /udisk/1
    Find subString group(1): /udisk/1
    =======================
    Find subString group(0):  /udisk/2
    Find subString group(1): /udisk/2
    =======================

    这里有两个 group: “空格/udisk/*” 和 “/udisk/*”。确定两个,是因为我先调用了 groupCount() 来打印有 group 的个数。

    所以,很明显 group(0) 是整个表达式,而 group(1) 就是我们用括号括起来的部分。

    某文档写道,捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

    • ((A)(B(C)))
    • (A)
    • (B(C))
    • (C)

    所以, group 是正则表达式中捕获组的意思,并不是匹配了多少次。匹配多次,需要继续调用 match.find() 从上一次的位置继续匹配。

  • 相关阅读:
    .NET 多线程 Task async await
    .NET5 MVC 文件目录
    Html 问题记录
    vue学习笔记(记录知识点)
    vue调试工具vue-devtools安装及使用
    node.js入坑记录
    vue从0开始笔记
    前端样式css问题记录
    谷歌浏览器chrome console 发送POST/GET请求
    jQuery的请求数据方式
  • 原文地址:https://www.cnblogs.com/pied/p/11045954.html
Copyright © 2011-2022 走看看