我需要从HTML样式参数中获取background-image
值的网址,在这个阶段我有这个常规(URL
长期常规匹配有效的URL,所以我在这里省略它以简化):
background-image\s*?\:\s*?(url\(\s*?(['"])?\s*?(URL)\s*?(\2)?\s*?\)([,]?))+
它只匹配第一次出现的URL,我想我已经允许匹配所有出现次数(但显然我还没有)。我做错了什么?
输入可能如下所示:
String txt = "<div style=\"background-image: url('A'), url(B);\">fooo</div>";
以及我需要通过常规实现的目标:
background-image
值后跟*
空格,然后:
(冒号)和*
空格。url()
模式提取所有值。现在,我能够以url()
模式获取所有值,但我无法确保存在background-image
值。
答案 0 :(得分:0)
你的正则表达式没问题,除了它没有搜索URL,它搜索文本URL。我已在网址后面添加了\ d来证明您的正则表达式有效:
Pattern p = Pattern.compile("background-image\\s*?\\:\\s*?(url\\(\\s*?(['\"])?\\s*?(URL\\d)\\s*?(\\2)?\\s*?\\)([,]?))+");
Matcher m = p.matcher("background-image: url(URL1); background-image: url(URL2)");
while( m.find() ){
System.out.println(m.group(3));
}
Output:
URL1
URL2