[英]Regular expression for matching repeated substring
我需要从HTML样式参数中的background-image
值获取URL,在此阶段,我有这个常规( URL
是与有效URL匹配的长期常规,因此为简化起见,在此省略):
background-image\s*?\:\s*?(url\(\s*?(['"])?\s*?(URL)\s*?(\2)?\s*?\)([,]?))+
它只匹配第一次出现的URL,我想我已经允许匹配所有出现的URL(但显然我没有)。 我究竟做错了什么?
输入可能看起来像这样:
String txt = "<div style=\"background-image: url('A'), url(B);\">fooo</div>";
以及我需要通过常规来实现的目标:
background-image
值,后跟*
空格,然后是:
冒号),再是*
空格。 url()
模式中的所有值。 现在,我能够获取url()
模式中的所有值,但无法确保有background-image
值。
您的正则表达式很好,除了它不搜索URL而是搜索文本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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.