在我對正則表達式的調試中,我需要找出實際上導致匹配的替代方法中的哪一個。例如,對於目標串:正則表達式工具或方法標識與某些目標文本相匹配的替代方案?
"foo"
與正則表達式:
"f.*|other"
我需要一種方法來知道,在上述正則表達式中,替代"f.*"
實際上導致匹配。
在一些複雜的正則表達式中有許多替代項,這對調試來說非常具有挑戰性。
在我對正則表達式的調試中,我需要找出實際上導致匹配的替代方法中的哪一個。例如,對於目標串:正則表達式工具或方法標識與某些目標文本相匹配的替代方案?
"foo"
與正則表達式:
"f.*|other"
我需要一種方法來知道,在上述正則表達式中,替代"f.*"
實際上導致匹配。
在一些複雜的正則表達式中有許多替代項,這對調試來說非常具有挑戰性。
(?<MYRESULT>(?<RESULT1>f.*)|(?<RESULT2>other))
現在,MYRESULT和RESULT1或RESULT2都將包含您的匹配項。
如果每個備選方案都包含在其自己的捕獲組中,則只知道其中一個組可以參與匹配。其他人在查詢時會返回空值或未定義的值。所以你只需遍歷捕獲組,直到找到一個不是空的。詳細的過程將取決於您使用哪種正則表達式風格和/或編程語言;有很多變化。
所以,如果你的正則表達式是(f.*)|(other)
和它匹配foo
,#1組將包含foo
和組#2將是空的(或nil
,或undef
,這取決於你所使用的語言;但要注意,一個空字符串通常表示沒有消耗任何字符的成功匹配)。
您是否嘗試過使用類似http://regexpal.com/的內容? – Amber 2011-03-09 08:04:46