正则表达式按特定顺序匹配一个或两个组

时间:2017-03-16 11:37:23

标签: regex

我正在尝试匹配并捕获模式/(A)/,后跟/(B)/。两者中的任何一个都是可选的,但必须存在至少一个,如果两者都存在,则需要按顺序。还有一些额外的东西/X/必须匹配但不能被捕获

的一些事情:

/X(A)?(B)?/

这不起作用,因为它与没有XA

的裸B匹配
/X(A|B){1,2}/

这不起作用,因为它可以按相反顺序匹配AB,即。 XBA,它不应该。

/X(A|B|AB)/

这在理论上可行,但表达式AB实际上非常长且复杂,因此它成为维护和调试的噩梦。 (我使用AB作为此问题的替身,以避免混乱)

所以我需要能够匹配并捕获连续块的东西,其中至少有一个存在于指定位置。有吗?

请匹配

XA
XB
XAB

并执行匹配

X
XBA

最好不重复正则表达式中的元素。

0 个答案:

没有答案