正则表达式 - 从Java中的String中提取信息

mic*_*son 1 java regex parsing

我在Java代码中应用正则表达式时遇到问题.
我的文本字符串是这样的(String myString)

        name: Abc Def;
        blah: 1 2 3;
        second name: Ghi;
Run Code Online (Sandbox Code Playgroud)

我需要提取名称信息(Abc Def).名称可以包含1+个单词的字符串.所有属性(name,blah,second name)在开头都有一些空格

我试图使用的代码是

String patternStr = "\\s{2,}name:\\s([\\w ]*\\w+);";
Matcher matcher = Pattern.compile(patternStr).matcher(myString);
if (matcher.matches()) 
    System.out.println(matcher.group(1));
Run Code Online (Sandbox Code Playgroud)

我的正则表达式似乎与在线工具正常工作(正则表达式:\ s {2,}名称:\ s([\ w]*\w +);)但是当我将它移植到java代码时它根本不起作用.知道我错过了什么吗?

非常感谢


编辑:如果我使用matcher.find()它工作正常.

gen*_*nio 5

你走了:

^\s*name:\s*([^;]+);
Run Code Online (Sandbox Code Playgroud)
  • 从行的开头开始.
  • 吃尽可能多的空白.
  • 找到"名字:"
  • 吃尽可能多的空白.
  • 在下一个分号之前捕获任何内容
  • 确保有分号