我有一个正则表达式(?i)(?<=srcset=\")([^\"]+)
,它匹配页面html源代码中srcset的内容,它工作正常,现在我想用类似http[^ ]+
的东西从捕获组中提取所有的url--但是我只能得到一个,不管我怎么试。
下面是一个例子:(?i)(?<=srcset=\")((http[^\s]+).*?)+(?=\")
问题是:将两个运算合并到一个表达式中非常重要。
有什么想法吗?
源代码:
srcset="https://www.thesite.nl/wp-content/uploads/2016/02/logo-home.png 793w, https://www.thesite.nl/wp-content/uploads/2016/02/logo-home-300x201.png 300w, https://www.thesite.nl/wp-content/uploads/2016/02/logo-home-768x514.png 768w, https://www.thesite.nl/wp-content/uploads/2016/02/logo-home-700x469.png 700w"
2条答案
按热度按时间pqwbnv8z1#
如果支持,您可以使用
\G
anchor链接匹配:See this demo at regex101
(?:\G(?!^)|srcset=")
either与srcset="
匹配或继续上一匹配[^"]*?
缓慢匹配非双引号的any amount(链接之间)\b(https?:[^"\s,]+)
capture链接到 * 第一个组 *,从word boundary开始zzwlnbp82#
使用
xidel
,一个适当的HTML解析器,使用xpath:输出