【问题标题】:RegEx to find a string included between two characters while EXCLUDING the delimitersRegEx 查找包含在两个字符之间的字符串,同时排除分隔符
【发布时间】:2020-06-20 12:25:00
【问题描述】:

我有点迷失正则表达式,希望能得到一些帮助。

目标:提取两个“”之间的URL,而不返回“本身。

基本字符串:

<a href="somerandomurl" class="btn btn-xs btn-default "><span class="fa fa-eye fa-fw poptip" data-toggle="tooltip" title="" data-original-title="Inspect in-game"></span></a>

我想出了以下解决方案:

(="(.*)" class="btn btn-xs btn-default ")

太糟糕了,它是匹配的

="somerandomurl" class="btn btn-xs btn-default "

是否可以只匹配内部结果而不匹配分隔符?

somerandomurl

既然这应该包含在应该尽可能快地运行的脚本中,也许有更快更好的方法?实际上,此正则表达式搜索将应用于完整的网站。

【问题讨论】:

  • 最好不要尝试使用正则表达式解析 HTML。什么语言?改用 HTML 解析器
  • 使用DOMParser 与例如document.querySelectorAll("a.btn.btn-xs.btn-default"); 并获得href
  • 您使用什么语言/工具?来自regex tag info:“由于正则表达式尚未完全标准化,所有带有此标签的问题还应包含一个指定适用的编程语言或工具的标签。”
  • Parsing HTML with regex is a hard job HTML 和正则表达式不是好朋友。使用解析器,它更简单、更快且更易于维护。
  • 看看这个类似问题的答案:stackoverflow.com/questions/1454913/…

标签: regex


【解决方案1】:

使用 RegEx 匹配标记通常不是一个好主意。如果您可以选择使用 HTML / DOM 解析器。

也就是说,您的 RegEx 应该与大多数语言的示例匹配。但它定义了两组括号,因此您想要的结果位于第 2 组中。第 0 组和第 1 组都将保持完整匹配。

如果您在阅读正确的结果组时遇到问题,请提供一些其他信息,例如您使用的语言,最好是 sn-p。

【讨论】:

  • 我首先使用了 Cheerio(一个 dom 解析器),但注意到它增加了 30 毫秒的延迟/计算时间,而正则表达式仅增加了 2 毫秒的延迟/计算时间。太糟糕了,我的语法很糟糕:
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2020-05-20
  • 2010-10-15
  • 2018-11-25
相关资源
最近更新 更多