我要翻譯的當前正則表達式:正則表達式相當於*?
(.*?)<w:t([^>]*)>
不使用*?
(基於ActionScript3)
意思是我想的<w:t
中第一次出現,我可以用([^<]*)
之前得到的一切,但問題是我想匹配例如<w:r
裏面的第一個parenthisis。
是否可以用正則表達式來完成,還是我必須手動完成?
我要翻譯的當前正則表達式:正則表達式相當於*?
(.*?)<w:t([^>]*)>
不使用*?
(基於ActionScript3)
意思是我想的<w:t
中第一次出現,我可以用([^<]*)
之前得到的一切,但問題是我想匹配例如<w:r
裏面的第一個parenthisis。
是否可以用正則表達式來完成,還是我必須手動完成?
我很驚訝AS3不會支持非貪婪!不過,我知道至少是AS3完全支持lookhead斷言,這意味着你可以這樣做:
((?:.(?!<w:t))*)
這樣做是捕捉每一個字符,一個接一個,只要字符後面沒有<w:t
。
小心不要將!<
翻轉爲<!
否則您會無意中斷言後面的條件!
編輯
嗯,AS3 應該支持非貪婪。我懷疑你的問題在別處。例如,或許正則表達式的剩餘部分出現問題,導致它與「第一個」實例不匹配,導致它「繼續查找」,直到確實與匹配的後續實例相匹配。
你說得對,正則表達式仍然不起作用。因爲我不知道前瞻斷言,無論如何,這有助於我,我將使用它來處理整個正則表達式。 – edi9999
編輯:撤回評論。 –
。*的問題在於它不會在第一次出現<?w:t – edi9999
「?」時停止。不應該在那裏 – Kodiak