2017-05-26 104 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,因为我们不能依赖'[^>]'。 –