【问题标题】:Match URLs containing a specific word匹配包含特定单词的 URL
【发布时间】:2015-09-08 02:02:28
【问题描述】:

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

我正在尝试在 NoteTab Light 中执行此操作,并试图弄清楚如何编写正则表达式,但似乎无法理解它。我不是程序员:所以你可以想象我迷路了。

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

这是我所拥有的:

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

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

最终,我试图获取 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" 的 URL?

【问题讨论】:

标签: regex xml


【解决方案1】:

以下内容似乎对the XML file you provided很有效:

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

Debuggex Demo

【讨论】:

  • Debuggex 演示对 OP 提供的整个 XML 文件运行良好,但我无法将它与整个 XML 文件一起保存:所以我用大约一半的 XML 文件的 item 元素保存它,其中仍然清楚地展示了正则表达式的行为。要针对整个 XML 文件运行演示,只需将其内容粘贴到演示页面上的相应文本区域即可。
  • 感谢 J0e,这很有意义。我试图自己解决这个问题大约 3 个小时,但一无所获。感谢您抽出宝贵时间为我解答这个问题。
【解决方案2】:

这个怎么样:

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

【讨论】:

    【解决方案3】:

    试试这个:

    (?s)url\s*?=\s*?'(.*?/(s\d+-).*?)'
    

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

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

    【讨论】:

    • 谢谢。它似乎太匹配了,但你的解释肯定是有帮助的。
    猜你喜欢
    • 2010-12-25
    • 2013-07-02
    • 2012-07-24
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多