正则表达式捕获组“* 2 * 2 * 2”或“* 2 * 2 * 2 * 2”?

时间:2013-08-16 17:46:50

标签: java

String input = "This is a *2*2*2 test";
String input1 = "This is also a *2*2*2*2 test"; 

如何编写捕获(* 2 * 2 * 2)或(* 2 * 2 * 2 * 2)的正则表达式?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

Pattern p = Pattern.compile("((\\*2){3,4})");

说明:\\在模式中插入一个\;这会转义*,否则将是通配符匹配。然后,字符序列“* 2”恰好匹配3或4次。围绕整个事物的括号使它成为一个捕获组。

答案 1 :(得分:1)

您可以尝试使用正则表达式:

(\*2){3,4}

另一方面,你需要使用Pattern的常量来避免每次都重新编译表达式,如下所示:

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("(\\*2){3,4}");

public static void main(String[] args) {
    String input = "This is a *2*2*2 or *2*2*2*2 test";
    Matcher matcher = REGEX_PATTERN.matcher(input);
    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}

输出:

*2*2*2
*2*2*2*2