[英]I want to match exactly 2 times with regex
我有类似这个字符串的东西。
XXXX^^^141409i1^^^XXXX。
我想在一个组中匹配那些 3 ^
并且该组恰好匹配 2 次。 我写了这个,但它似乎不起作用。
(?:(\^){3}){2}
我必须拆分它并提取中间的数字。 关键是该组应该正好由 3 ^
和正好 2 次组成。 如果第一组只有 1 或 2 ^
它将停止匹配。 该字符串是用户输入,如果他输入的字符串多于该字符串,例如XXXX^^^141409i1^^^XXXX^^^^XXXX
那么它不应该匹配最后一组,只有前 2 个。(对不起,如果我'我太模棱两可了。)
练习的重点是拆分字符串并获取中间的数字,我写了这一行,但问题是它匹配每个 ^^^,我只想精确匹配 2 次。
String[] split = s.split("(\\^){3}");
如果我正确理解你想要什么,我希望这会对你有所帮助:
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));
}
Output:
The number in the middle: 141409i1
在这里你可以看到它是如何工作的: https://regexr.com/51r9e
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.