正则表达式工具或方法,用于标识与某些目标文本匹配的备用项?

时间:2011-03-09 07:54:17

标签: regex capturing-group

在我对正则表达式的调试中,我需要找出替代方案中实际产生匹配的替代方法。例如,对于目标字符串:

"foo"

使用正则表达式:

"f.*|other"

我需要一种方法来知道在上面的正则表达式中,替代"f.*"实际上导致了匹配。

在一些具有许多替代项的复杂正则表达式中,这对于调试来说非常具有挑战性。

2 个答案:

答案 0 :(得分:1)

如果每个替代方案都包含在自己的捕获组中,则您知道其中只有一个组可以参与该匹配。其他人在查询时将返回null或undefined值。所以你只需遍历捕获组,直到找到一个非空的。详细过程取决于您使用的正则表达式和/或编程语言;有很多变化。

因此,如果您的正则表达式为(f.*)|(other)且匹配foo,则组#1将包含foo,组#2将为空(或nil或{ {1}},取决于您正在使用的语言;但请注意,空字符串通常表示不使用任何字符的成功匹配。

答案 1 :(得分:0)

(?<MYRESULT>(?<RESULT1>f.*)|(?<RESULT2>other))

现在,MYRESULT和RESULT1或RESULT2都将包含您的匹配。