2011-03-09 12 views
1

在我對正則表達式的調試中,我需要找出實際上導致匹配的替代方法中的哪一個。例如,對於目標串:正則表達式工具或方法標識與某些目標文本相匹配的替代方案?

"foo" 

與正則表達式:

"f.*|other" 

我需要一種方法來知道,在上述正則表達式中,替代"f.*"實際上導致匹配。

在一些複雜的正則表達式中有許多替代項,這對調試來說非常具有挑戰性。

+0

您是否嘗試過使用類似http://regexpal.com/的內容? – Amber 2011-03-09 08:04:46

回答

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

現在,MYRESULT和RESULT1或RESULT2都將包含您的匹配項。

1

如果每個備選方案都包含在其自己的捕獲組中,則只知道其中一個組可以參與匹配。其他人在查詢時會返回空值或未定義的值。所以你只需遍歷捕獲組,直到找到一個不是空的。詳細的過程將取決於您使用哪種正則表達式風格和/或編程語言;有很多變化。

所以,如果你的正則表達式是(f.*)|(other)和它匹配foo,#1組將包含foo和組#2將是空的(或nil,或undef,這取決於你所使用的語言;但要注意,一個空字符串通常表示沒有消耗任何字符的成功匹配)。

相關問題