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中引发异常,在PHP中工作_Java_Regex_Pattern Matching - Fatal编程技术网

正则表达式在JAVA中引发异常,在PHP中工作

正则表达式在JAVA中引发异常,在PHP中工作,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有一个工作PHP正则表达式,它是 \w+[\(](\?*)\w+[\,](\?*)\w+[\)] 此处提供了其工作的链接 我可以按预期在PHP中使用它,但当我在JAVA中使用相同的时,它会给我一个例外 Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown inline modifier near index 37 (?<A>\w+\((\?*)\w+(,(\?*)\w+)?\))(,(

我有一个工作PHP正则表达式,它是

\w+[\(](\?*)\w+[\,](\?*)\w+[\)]
此处提供了其工作的链接

我可以按预期在PHP中使用它,但当我在JAVA中使用相同的时,它会给我一个例外

Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown inline modifier near index 37 (?<A>\w+\((\?*)\w+(,(\?*)\w+)?\))(,(?&A))*
线程“main”java.util.regex.PatternSyntaxException中的异常:索引37附近的未知内联修饰符(?\w+\(\?*)\w+(,(\?*)\w+)(,(?&A))* 我对正则表达式和java不是很精通,但我得到的是,在阅读了internet上的一些相关问题后,可能会出现一些支持问题,因为正则表达式工作正常,并且它在PHP中给出了准确的结果,问题出在java中的某些地方


这方面需要帮助。

Java正则表达式不支持递归子例程调用
(?&A)
在此无效。另外,不要忘记使用双反斜杠来转义Java字符串文本中的正则表达式元字符

唯一的解决办法是重复
(?:


(?。我删除了内部捕获组,因为您很可能不会使用它们。

Java正则表达式不支持递归子例程调用
(?&A)
在这里无效。另外,不要忘记使用双反斜杠来转义Java字符串文本中的正则表达式元字符

唯一的解决办法是重复
(?:


(?。我删除了内部捕获组,因为您很可能不会使用它们。

Java正则表达式不支持递归和子例程调用,
(?&A)
无效。只需替换为组模式。不要忘了使用双反斜杠来转义Java字符串文本中的正则表达式元字符。请参阅。我用您的正则表达式替换了我的正则表达式,它不会引发异常,但也找不到模式。任何我获得线索的方法都让我来解决。感谢您的时间和努力。我删除了t内部捕获组,你需要它们吗?把它们放在原来的地方就行了。我没有让它工作,我正在把它分成块,并尝试使用两个java兼容的正则表达式来找到它。它能满足你的需要吗?java正则表达式不支持递归和子例程调用,
(?&A)
无效。只需替换为组模式。不要忘了使用双反斜杠来转义Java字符串文本中的正则表达式元字符。请参阅。我用您的正则表达式替换了我的正则表达式,它不会引发异常,但也找不到模式。任何我获得线索的方法都让我来解决。感谢您的时间和努力。我删除了t他说,“你需要它们吗?把它们放在原来的地方就行了。我不想让它工作,我把它分成几块,然后用两个与java兼容的正则表达式来分块找到它。它能满足你的需要吗?”?
(?<A>
  \w+\(
  \?*\w+
  (?:,\?*\w+)?
  \)
)
(,
  \w+\(
  \?*\w+
  (?:,\?*\w+)?
  \)
)*
String block = "\\w+\\(\\?*\\w+(?:,\\?*\\w+)?\\)";
String pat = "(" + block + ")(," + block + ")*";
List<String> strs = Arrays.asList("a(b)", "a(?v)", "a(b),c(?c,a)");
for (String str : strs) {
    Matcher m = Pattern.compile(pat).matcher(str);
    while (m.find()) {
        System.out.println(m.group(0));
    }
}