正则表达式匹配A,B和AB

时间:2017-05-09 07:12:04

标签: regex preg-replace

我想创建一个与ABAB匹配的正则表达式,其中AB是非常复杂的正则表达式。

一种解决方案是使用(A|A?B)(AB?|B),但我必须重复其中一个表达式。

A?B?不起作用,因为这也匹配空字符串。

是否可以创建此正则表达式而不重复AB

2 个答案:

答案 0 :(得分:1)

是的,您必须使用轮换,但在PCRE中,您可以使用子程序调用来递归子模式:

A(?<BGroup>B)?|(?&BGroup)

请参阅regex demo

(?<BGroup>B)是一个命名的捕获组,其模式以(?&BGroup)命名的子例程调用重复。

请参阅Recursive patterns

答案 1 :(得分:0)

我会将A和B存储到变量中并创建模式 (AB?| B)来自A和B的连接。这具有增强可读性的优点,因为您可以记录子模式A和B。

相关问题