我的问题相当简单,即使其服务目的非常复杂。我将用一个简单的例子:如何在配对内匹配配对
AzzAyyAxxxxByyBzzB
所以通常我会想A
和B
之间得到的一切。然而,因为第一个A
和最后B
(一对)之间的一些内容包含额外的AB
对,我需要推回比赛结束。 (不知道这最后一部分是否有意义)。
所以,我正在寻找的是一些正则表达式,让我有以下的输出:
Match 1
Group 1: AzzAyyAxxxxByyBzzB
Group 2: zzAyyAxxxxByyBzz
然后,我会再次匹配它来获得:
Match 2
Group 1: AyyAxxxxByyB
Group 2: yyAxxxxByy
然后终于再次得到:
Match 3
Group 1: AxxxxB
Group 2: xxxx
显然,如果我尝试(A(.*?)B)
整体上输入我得到:
Match x
Group 1: AzzAyyAxxxxB
Group 2: zzAyyAxxxx
这是不是我要找的:)
我希望这是有道理的。我明白,如果这不能在RegEx中完成,但我想在我放弃它并尝试其他方法之前,我会问你们中的一些正则表达式向导。谢谢!
附加信息:
我工作的项目是用Java编写。其他
一个问题是,我解析其中可能包含这样的一个文件:
AzzAyyAxxxxByyBzzB
Here is some unrelated stuff
AzzAyyAxxxxByyBzzB
AzzzBxxArrrBAssssB
和顶部AB
对必须单独从底部AB
双
完美的解决方案,不幸的是我应该提到另一个约束。请参阅编辑。抱歉! – kentcdodds
@kentcdodds其实我已经在编辑我的答案;)。那些“平行”的“A ... B”对总是只出现在不同的线上?或者在一条线上可能会有多个连续的线对? –
@kentcdodds您使用哪种语言或工具?一些正则表达式引擎支持简单的递归,这可能会帮助你。 –