Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想用正则表达式精确匹配2次_Java_Regex - Fatal编程技术网

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

Java 我想用正则表达式精确匹配2次,java,regex,Java,Regex,我有类似这根绳子的东西 XXXX^^^141409i1^^^XXXX 我想将一个组中的3个^与该组精确匹配2次。这是我写的,但似乎不起作用 (?:(\ ^){3}{2} 编辑 我必须把它拆分,然后在中间提取数字。关键是,该组应该正好由3次^和2次组成。如果第一组只有1或2个^,它将停止匹配。该字符串是用户输入的,如果他输入的字符串多于该字符串,例如XXXX^^^^141409i1^^^^XXXX^^^^^XXXX,则该字符串不应与最后一组匹配,仅与前2组匹配。(如果我太模棱两可,很抱歉。) 编辑

我有类似这根绳子的东西

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));
}
输出:

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的值并提取数字。例如