java中用于解析字符串的正则表达式

java中用于解析字符串的正则表达式,java,Java,我有一根绳子。弦乐是“新英格兰12号,费城24号(决赛)”。我需要一个正则表达式,我应该能够从中检索类似的项 一队——新英格兰队 一队得分——12分 第二队——菲利德尔皮亚 第二队得分——24分 结果——大括号中的Final或其他内容 使用以下命令: "(\\w+) (\\d+) (\\w+) (\\d+) \((\\w+)\)" 试试这个 ^[\D]*\s*\d*\s*[\D]*\s*\d*\s*\([\D]*\)$ 下面是一个演示如何使用正则表达式和组来提取所需数据的示例 仅供参考,尽管

我有一根绳子。弦乐是“新英格兰12号,费城24号(决赛)”。我需要一个正则表达式,我应该能够从中检索类似的项

  • 一队——新英格兰队
  • 一队得分——12分
  • 第二队——菲利德尔皮亚
  • 第二队得分——24分
  • 结果——大括号中的Final或其他内容
  • 使用以下命令:

    "(\\w+) (\\d+) (\\w+) (\\d+) \((\\w+)\)"
    
    试试这个

    ^[\D]*\s*\d*\s*[\D]*\s*\d*\s*\([\D]*\)$
    
    下面是一个演示如何使用正则表达式和组来提取所需数据的示例

    仅供参考,尽管它仅适用于您提供的输入,但此代码将扫描包含多个类似结果的输入,并在
    while
    循环中匹配所有结果

    public static void main( String[] args ) {
        String input = "New England 12 Philidelphia 24 (Final)";
        String regex = "([a-zA-Z ]+)\\s+(\\d+)\\s+([a-zA-Z ]+)\\s+(\\d+)\\s+\\((\\w+)\\)";
        Matcher matcher = Pattern.compile( regex ).matcher( input);
        while (matcher.find( )) {
            String team1 = matcher.group(1);
            String score1 = matcher.group(2);
            String team2 = matcher.group(3);
            String score2 = matcher.group(4);
            String result = matcher.group(5);
            System.out.println( team1 + " scored " + score1 + ", " + team2 + " scored " + score2 + ", which was " + result);
        }
    }
    
    输出

    New England scored 12, Philidelphia scored 24, which was Final
    

    您是否需要解析“汉诺威96 2沙尔克04 1(最终版)”?“汉诺威96沙尔克04(最终版)”类似的内容。但不是分数后额外的2和1。我的观点完全正确。额外的2和1就是比分。@Thilo甚至没有提到慕尼黑1860:DOr 1。FC萨尔布鲁肯,将数字放在前面。如何“测试”?它甚至没有编译!(提示:这是一个java问题)哦,天哪。我看不出来。抱歉,这是在c#中,但是这个正则表达式应该可以很好地工作。我不知道如何从java中的组中提取,所以可以给你正则表达式。查看中的解决方案,了解如何使用上述表达式从组中提取值。我想您必须添加额外的“(\\w+)(\\d+)(\\w+)(\\d+)(\\w+)”,以便在java中转义。是转义<代码>\或(我们使用a\,但是在
    \w
    \d
    的情况下你也需要这样做吗?我不这么认为!这样做有效吗?@Bohemian,Nice one和+1;)。