2017-05-26 103 views
-1

我需要在標籤MadCap:Variable中找到文本ABRA。我試圖使用/variable.*ABRA.*\//g>,但它匹配比我預期的更長的結果。 Sample of my test正則表達式匹配比預期的更長的結果

我希望我只能得到類似variable name="General.ProductNameABRAG1" />的東西,而不是示例中的文字。我的錯誤在哪裏?

編輯。正如WiktorStribiżew指出的那樣,對於解析XML或HTML,最好使用HTML解析器。我不能改變技術,所以我被困在regex。另一方面,我需要找到的所有文本都保證不會有>內部標籤。

+0

@Jan不,請參閱http://regexr.com/3g1ri。 Sk1X1,錯誤在於你用正則表達式解析HTML。 –

+1

使用'[^>]'而不是'.' –

+0

@WiktorStribiżew 這意味着不可能?我現在正忙於使用正則表達式。 – Sk1X1

回答

0

使用[^>]匹配除了>任何字符這是.標籤標記insteaf的端部,也如果正則表達式支持懶惰/貪婪匹配*?將避免回溯。

/variable[^>]*?ABRA[^>]*\/>/g 
+0

如果在兩者之間有任何非序列化的'>',你將不會得到匹配。 –

+0

@WiktorStribiżew'>'不應該出現在標籤中值應該被轉義'>' –

+0

不,它在一些XML分析器中不是必需的。我們必須處理具有'>'的XML,因爲我們不能依賴'[^>]'。 –