我有类似这样的字符串。
XXXX ^^^ 141409i1 ^^^ XXXX。
我想匹配一组中的3个^
,并且该组恰好匹配2次。我写了这个,但是似乎没用。
(?:(\^){3}){2}
我必须将其拆分并在中间提取数字。关键是该组应该正好由3 ^
组成,正好是2次。如果第一组只有1个或2个^
,它将停止匹配。该字符串是用户输入的,如果他输入的字符串多于该字符串,例如XXXX^^^141409i1^^^XXXX^^^^XXXX
,则该字符串不应与最后一组匹配,而仅与前2个匹配。(抱歉,如果我太含糊了。)
练习的重点是分割字符串并在中间得到数字,我写了这一行,但问题是它匹配每个^^^,而我只想精确匹配2次。
String[] split = s.split("(\\^){3}");
答案 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