Java 我想用正则表达式精确匹配2次
我有类似这根绳子的东西 XXXX^^^141409i1^^^XXXX 我想将一个组中的3个Java 我想用正则表达式精确匹配2次,java,regex,Java,Regex,我有类似这根绳子的东西 XXXX^^^141409i1^^^XXXX 我想将一个组中的3个^与该组精确匹配2次。这是我写的,但似乎不起作用 (?:(\ ^){3}{2} 编辑 我必须把它拆分,然后在中间提取数字。关键是,该组应该正好由3次^和2次组成。如果第一组只有1或2个^,它将停止匹配。该字符串是用户输入的,如果他输入的字符串多于该字符串,例如XXXX^^^^141409i1^^^^XXXX^^^^^XXXX,则该字符串不应与最后一组匹配,仅与前2组匹配。(如果我太模棱两可,很抱歉。) 编辑
^
与该组精确匹配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));
}
输出:
The number in the middle: 141409i1
在这里您可以看到它是如何工作的:您能澄清一下您想用字符串做什么吗?预期的结果是什么?布尔检查,对还是错?类似于
text.matches(“.\\\^{3}.\\\\\^{3}.*”)
?或者,Pattern.compile((?)如果该模式正好出现2次^(?(?:.*^{3}){3})。*^{3}.*^{3}我有这种类型的字符串xxxx^ ^ ^ 141409i1^ ^ xxxx。我必须将它拆分,并在中间提取数字。点是,该组应该包括正好3’^’和2次。如果第一组只有1或2’^,它将停止匹配。该字符串是用户输入,并且如果他输入更多的thANT字符串,如xxxx^ ^ ^ 141。409i1^^^^XXXX^^^^^XXXX它不应该匹配最后一个组,而应该只匹配前2个组。(如果我太含糊不清,很抱歉)可能捕获组中的第一个匹配项^.*(?然后取组1的值并提取数字。例如