我正在尝试匹配并捕获模式/(A)/
,后跟/(B)/
。两者中的任何一个都是可选的,但必须存在至少一个,如果两者都存在,则需要按顺序。还有一些额外的东西/X/
必须匹配但不能被捕获
不的一些事情:
/X(A)?(B)?/
这不起作用,因为它与没有X
或A
B
匹配
/X(A|B){1,2}/
这不起作用,因为它可以按相反顺序匹配A
和B
,即。 XBA
,它不应该。
/X(A|B|AB)/
这在理论上可行,但表达式A
和B
实际上非常长且复杂,因此它成为维护和调试的噩梦。 (我使用A
和B
作为此问题的替身,以避免混乱)
所以我需要能够匹配并捕获连续块的东西,其中至少有一个存在于指定位置。有吗?
请匹配
XA
XB
XAB
并执行不匹配
X
XBA
最好不重复正则表达式中的元素。