首页 > 解决方案 > 如何在正则表达式中创建多个组?

问题描述

从字符串中,我需要一组源即 beforeTO和目标即 after TO。有了这个,我需要来自源的子组,即(3:8)单个正则表达式模式。

MOVE A (3:8) TO B.

标签: javaregex

解决方案


很难猜测这里可能需要什么,我会说可能类似于:

([^(]+(\(.+?\)))\s*TO\s*(.*)

演示

测试

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "([^(]+(\\(.+?\\)))\\s*TO\\s*(.*)";
final String string = "MOVE A (3:8) TO B\n";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

推荐阅读