我想与正则表达式精确匹配2次

时间:2020-04-04 09:17:07

标签: java regex

我有类似这样的字符串。

XXXX ^^^ 141409i1 ^^^ XXXX。

我想匹配一组中的3个^,并且该组恰好匹配2次。我写了这个,但是似乎没用。

(?:(\^){3}){2}

编辑

我必须将其拆分并在中间提取数字。关键是该组应该正好由3 ^组成,正好是2次。如果第一组只有1个或2个^,它将停止匹配。该字符串是用户输入的,如果他输入的字符串多于该字符串,例如XXXX^^^141409i1^^^XXXX^^^^XXXX,则该字符串不应与最后一组匹配,而仅与前2个匹配。(抱歉,如果我太含糊了。)

EDIT2

练习的重点是分割字符串并在中间得到数字,我写了这一行,但问题是它匹配每个^^^,而我只想精确匹配2次。

String[] split = s.split("(\\^){3}"); 

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您想要什么,希望对您有所帮助。

String input = "XXXX^^^141409i1^^^XXXX^^^^XXXX";
Pattern pattern = Pattern.compile(".*?\\^{3}(\\w+)\\^{3}");
Matcher matcher = pattern.matcher(input);

if (matcher.find()) {
    System.out.println("The number in the middle: " + matcher.group(1));
}

输出:

The number in the middle: 141409i1

在这里您可以查看其工作原理:https://regexr.com/51r9e