Java 如何在正则表达式中忽略正向/负向的lookback/lookahead组?
是否有一种简单的方法可以使用另一个正则表达式(考虑括号内的情况)从正则表达式中删除正/负lookback/lookahead组 示例源表达式:Java 如何在正则表达式中忽略正向/负向的lookback/lookahead组?,java,regex,Java,Regex,是否有一种简单的方法可以使用另一个正则表达式(考虑括号内的情况)从正则表达式中删除正/负lookback/lookahead组 示例源表达式:A(?R)S(T) 我要删除的部分: ( (?你必须使用与PERL兼容的正则表达式,而不是标准的Java正则表达式,因为它们不支持递归。试试这个:\(\?我终于找到了一个解决方案…不得不做一些开箱思考:-) 下面的代码实现了这个技巧,基本上表现得像PERL的注释组构造(?#…): 使用字符串替换: expression=expression.replac
A(?R)S(T)
我要删除的部分:
(
(?你必须使用与PERL兼容的正则表达式,而不是标准的Java正则表达式,因为它们不支持递归。试试这个:
\(\?我终于找到了一个解决方案…不得不做一些开箱思考:-) 下面的代码实现了这个技巧,基本上表现得像PERL的注释组构造
: 使用字符串替换:(?#…)
expression=expression.replace(“(?”).replace(“(?”)”)(?我会编写或使用解析器——当您可以任意嵌套paren时,堆栈是很有用的,因为正则表达式不能存储状态。如果您确实使用正则表达式,则需要递归的。这比dupe目标建议的要困难一些,因为您需要省略转义子字符串,如
和其他边缘情况,但它应该给你一个起点。@ggorlen Recusion似乎很有希望,直到我发现它在Java中不可用为止。:-(你知道有任何活动的/最近的perl兼容的Java正则表达式库吗?(我在Android Studio中开发,所以我在使用Java方面没有太多选择)您可能会发现这些答案很有帮助:或者。\(