【发布时间】:2016-08-01 07:46:36
【问题描述】:
我有一个有效的 PHP 正则表达式
\w+[\(](\?*)\w+[\,](\?*)\w+[\)]
这里提供了它的工作链接https://regex101.com/r/tB2pS3/1
我可以按预期在 PHP 中使用它,但是当我在 JAVA 中使用它时,它给了我一个例外
Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown inline modifier near index 37 (?<A>\w+\((\?*)\w+(,(\?*)\w+)?\))(,(?&A))*
我不精通正则表达式和Java,但我得到的是在阅读互联网上的一些相关问题后可能存在一些支持问题,因为正则表达式工作正常并且它在PHP中给出了准确的结果,问题出在JAVA 某处。
在这方面需要帮助。
【问题讨论】:
-
Java regex 不支持递归和子程序调用,
(?&A)无效。只需替换为 A 组模式即可。并且不要忘记使用双反斜杠来转义 Java 字符串文字中的正则表达式元字符。见"(\\w+\\(\\?*\\w+(?:,\\?*\\w+)?\\))(,\\w+\\(\\?*\\w+(?:,\\?*\\w+)?\\))*"。 -
我用你的正则表达式替换了我的正则表达式,它没有抛出异常但也没有找到模式。不管我如何获得领先,让我解决它。感谢您的时间和精力。
-
我删除了内部捕获组,您需要它们吗?把它们放在原来的地方。
-
我没有让它工作,我将它分成块,并尝试使用两个与 java 兼容的正则表达式来找到它
-
见ideone.com/CET4bS - 它满足你的需要吗?
标签: java regex pattern-matching