Java - 正则表达式

标签 java regex

在Java中,我目前正在学习正则表达式语法,但我不太了解RE模式......

据我所知,模式具有组长度,下面的字符串模式的长度为 3。

import java.util.regex.*;

public class RE {
    public static void main(String[] args){
        String line = "Foo123";
        String pattern = "(.*)(\\d+)(.*)"; //RE Syntax I get stuck on.

        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(line);

        if (m.find()) {
            System.out.println(m.group(0));
            System.out.println(m.group(1));
            System.out.println(m.group(2));
            System.out.println(m.group(3));
        }
    }
}

如果有人能向我解释这个表达式的作用是什么,多个组的作用等等,我会很高兴......

最佳答案

组 0 包含整个匹配,组 1、2、3 包含相应的捕获字符。

输入字符串:Foo123

正则表达式:(.*)(\d+)(.*)

第一个捕获组中的第一个 .* 匹配直到最后一个的所有字符。然后它回溯直到找到一个数字。回溯的原因是为了找到匹配。相应的数字将被组 2 捕获(最后一位)。所有数字之后没有剩下任何内容,因此第 3 组中出现一个空字符串。

DEMO

关于Java - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401437/

相关文章:

java - 将非标准化数据集设置为嵌套文档

php - 如何使用 php 比较 2 个字符串并确定是否至少有 4 个字符发生变化

c# - 如何为给定示例制定正则表达式

Money 的 jQuery 自定义验证查询

javascript - 正则表达式禁止所有特殊字符但允许 jQuery 中的德语变音符号?

java - 文件名的正则表达式

java - 'field list' MySQLSyntaxErrorException 中的未知列

java - TestNG 测试使用一个测试的参数而不是自己的参数

java - Twitter API 识别启用了直接消息传递的用户

java - 以编程方式将文本颜色设置为二次色