【问题标题】:Regex href minimum length正则表达式 href 最小长度
【发布时间】:2014-05-15 16:16:12
【问题描述】:

我需要获取 HTML 文件中所有 'a' 元素的 href 属性值(大于特定长度)。我做了这样的东西;

<a.*href\s*=\s*"(?<link>.{15,})".*>

但它不能正常工作。有什么建议么?

【问题讨论】:

  • Obligatory link。而它seems to be working "fine",我们需要更多示例来调试不工作的部分。
  • 我在 Youtube 的主页上试了一下,得到了一些奇怪的字符串。我认为这是因为长度问题而发生的,但现在我明白问题出在别的地方了。
  • 您可能必须转义双引号。您测试的 URL 格式是否正确?您应该给出一个示例输入和“奇怪的字符串”输出。您是在 .NET 中执行此操作的,对吗?
  • @bluebaby 我在一些'a'标签中获得了href之后的其他属性。

标签: .net regex parsing


【解决方案1】:

以下是避免在标签内捕获多个字段的几种方法:

尝试使量词不贪婪。 {15,}? 而不是 {15,}。这样,它将在第二个双引号处停止,而不是在 &lt;a /&gt; 标记内捕获更多字段。

更好的选择是将量词前面的包罗万象的. 替换为更具限制性的内容。尝试独占字符类,例如 [^\s]{15,} 将查找至少 15 个连续的非空白字符。

到目前为止,这两种方法都对我有用,但请记住,URL 可能非常混乱,甚至在野外格式不正确,因此不能保证您能捕捉到所有内容。对目标网站了解得越多越好。

【讨论】:

  • 我最后测试的是perl中的"(?&lt;=href=\")[^\s]{15,}(?=\".*&gt;)"
  • 谢谢,我明白了。而且它不是一个专业的项目,只是一个简单的下载管理器。
猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多