Java中的正则表达式:如何引用;匹配模式;?

Java中的正则表达式:如何引用;匹配模式;?,java,regex,Java,Regex,我正在阅读Java正则表达式教程,它似乎只是教我测试模式是否匹配,但没有告诉我如何引用匹配的模式 例如,我有一个字符串“我的名字是xxxxx”。我想打印xxxx。我将如何使用Java正则表达式实现这一点 谢谢。您可以使用以下方法: 输出: akf *查看注意模式中括号的使用以及Matcher上的group()方法 import java.util.regex.*; public class Example { static public void main(String[] args

我正在阅读Java正则表达式教程,它似乎只是教我测试模式是否匹配,但没有告诉我如何引用匹配的模式

例如,我有一个字符串“我的名字是xxxxx”。我想打印xxxx。我将如何使用Java正则表达式实现这一点

谢谢。

您可以使用以下方法:

输出:

akf

*查看注意模式中括号的使用以及
Matcher上的
group()
方法

import java.util.regex.*;

public class Example {
    static public void main(String[] args) {
        Pattern regex = Pattern.compile("My name is (.*)");
        String s = "My name is Michael";
        Matcher matcher = regex.matcher(s);

        if (matcher.matches()) {
            System.out.println("original string: " + matcher.group(0));
            System.out.println("first group: " + matcher.group(1));
        }
    }
}
输出为:

original string: My name is Michael
first group: Michael

你在读什么教程?《太阳报》非常彻底地处理了这个话题,但你必须正确阅读:)

捕获字符串的一部分是通过括号完成的。如果要在字符串中捕获组,必须将正则表达式的这一部分放在括号中。这些组是按括号出现的顺序定义的,索引为0的组代表整个字符串

例如,regexp“Day([0-9]+)-Note([0-9]+)”将定义3个组:

  • 组(0):整个字符串
  • 组(1):regexp中的第一个组,即天数
  • 组(2):regexp中的第二组,即注释编号
至于实际代码以及如何检索您在regexp中定义的组,请查看Java文档,特别是Matcher类及其组方法:

您可以使用非常有用的工具测试regexp:

希望这有帮助, 干杯

帕伦人组成了一个捕获群。组0是整个图案,组1是背面参照

上述程序输出:

name is Ross
Ross

我不理解团队的概念。假设我有一个字符串“我的名字是迈克尔·杰克逊,他的名字是巴拉克·奥巴马”。我想拍下“迈克尔·杰克逊”和“巴拉克·奥巴马”。我该怎么做?好的。我得到了它。我得到了另一个更难的答案:xxx xxx xxx xxx(可以是任意数量的单词)是生还是死?我想捕捉:xxxxxx,活着,死去。我该怎么做?
Matcher m = Pattern.compile("name is (.*)").matcher("My name is Ross");
if (m.find()) {
  System.out.println(m.group(0));
  System.out.println(m.group(1));
}
name is Ross
Ross