我想写一个条件正则表达式,它匹配2个模式中的1个。

为此,我有一个简单的条件:

/((pattern1)|(pattern2))/gi

问题是,在pattern1中,我可能有多个捕获组-假设其中有三个,但是在pattern2中,我有五个。

我该如何告诉两个匹配的模式?我需要能够为输出请求适当的捕获组(按编号)。

我想在我的示例中,您可以检查是否存在大于3的任何捕获组值,但是说每个模式中捕获组的数量相等。我认为必须有一个很好的方法来执行此操作-我正在使用PHP或JavaScript。让我知道是否需要更多详细信息。

提前致谢!

最佳答案

模式是根据正则表达式本身编号的,而不是根据实际匹配的结果编号的。在您的示例中,整个组将始终为组1,然后第一个可能性(“ pattern1”)将为组2,另一个将为组3。如果“ pattern2”匹配,则组3将为非空,并且换句话说,第2组将为空。组1始终与组2和3中的非空之一相同。

关于php - 从条件REGEX获取捕获组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8332800/

10-12 18:38