繁体   English   中英

正则表达式,用于匹配重复的子字符串

[英]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>";

以及我需要通过常规来实现的目标:

  1. 检查是否有一个background-image值,后跟*空格,然后是:冒号),再是*空格。
  2. 提取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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM