繁体   English   中英

我想与正则表达式完全匹配 2 次

[英]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

练习的重点是拆分字符串并获取中间的数字,我写了这一行,但问题是它匹配每个 ^^^,我只想精确匹配 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM