正则表达式需要太多步骤

时间:2016-04-08 12:36:25

标签: java regex

你能纠正我的正则表达吗?

我需要匹配<img>?contextId的所有src个标记。例如,应匹配以下字符串:

<img xmlns="http://www.w3.org/1999/xhtml" src="http://10.3.34.34:8080/Bilder/pic.png?contextId=qualifier123" alt="Bild" />

我写了正则表达式,它完成了我需要的工作:

(?i)<img[^>]+? src\s*?=\s*?"(.*?\?contextId.*?)"[^\/]+?\/>

但在我看来,解析需要太多步骤(380这里):regex demo

输入字符串最多可达30,000个字符,我担心Java正则表达式引擎可能因我的非优化表达式而失败。

2 个答案:

答案 0 :(得分:1)

98步(regex demo):

<img.*?src="[^"]+\?contextId[^>]+>

这个正则表达式假设html没有格式错误,特别希望每个img标记都有src属性。

编辑:同时采用{​​{1}}和img链接(regex demo)的104个步骤:

src

答案 1 :(得分:1)

我对你的正则表达式进行了一些修改:

except:

REGEX 101 DEMO