匹配包含特定单词的网址

时间:2015-09-08 02:02:29

标签: regex xml

我正在尝试从url元素属性中找到的XML文档中提取URL并包含字符串"s144"

我试图在NoteTab Light中这样做,并试图找出如何编写正则表达式,但似乎无法绕过它。我不是程序员:所以你可以想象我迷路了。

XML文件是Google Picasaweb相册RSS Feed: https://picasaweb.google.com/data/feed/base/user/100688803282112893010/albumid/6140734189321131313?alt=rss&kind=photo&hl=en_US

这就是我所拥有的:

(?s)url\s*?=\s*?'(.*?)'

它匹配url属性中的网址,但我需要将其缩小为包含"s144"的网址。

最终我试图获取一个URL列表并将它们重写为链接到完整图像的图像缩略图。

<a href="https://lh3.googleusercontent.com/-5veHcnzHMRE/VTmFk66WJoI/AAAAAAAAIBs/kCUSSxylUAo/s1920-Ic42/35%252520Docked%252520with%252520210BR.jpg">
<img src="https://lh3.googleusercontent.com/-5veHcnzHMRE/VTmFk66WJoI/AAAAAAAAIBs/kCUSSxylUAo/s144-Ic42/35%252520Docked%252520with%252520210BR.jpg" />
</a>

如何将匹配范围缩小到仅包含"s144"的网址?

3 个答案:

答案 0 :(得分:0)

这个怎么样:

(?s)url\s*?=\s*?'([^']*?s144[^']*?)'

答案 1 :(得分:0)

试试这个:

stack init && stack build --install-ghc && stack ghci

(?s)url\s*?=\s*?'(.*?/(s\d+-).*?)' 部分的解释:

  • .*?/(s\d+-).*? - 看起来你已经知道这是什么了。
  • .*? /( - 网址的某些部分,以反斜杠开头
  • ) - ...后跟s符号(表示s,我猜...)
  • size - 后跟至少一位数字
  • \d+ - 后跟-字符

答案 2 :(得分:0)

以下似乎可以很好地对付the XML file you provided

url\s*=\s*'(\S*?s144\S*?)'

Regular expression visualization

Debuggex Demo