gpt4 book ai didi

java - URL anchor 文本正则表达式提取器

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:39 24 4
gpt4 key购买 nike

所以我试图找出一个对我来说根本不起作用的正则表达式。我从来不擅长写它们,希望有人能解释我在这里做错了什么。我正在尝试使用 Java 从 HREF 中提取 anchor 文本。我已经下载了我想要从罚款中获取文本的页面,但由于某种原因,它不会删除我需要的内容。在每个页面上,类别和标题都不会改变 - 事实上,我只想要具有特定类别和标题的页面。

s = <span class="alwaysTheSameClass"><a title="alwaysTheSameTitle" href="differentEveryTime">TextImTryingToPull</span><br>
s = s.replace(,""<span class=\"alwaysTheSameClass\"><a title=\"alwaysTheSameTitle\" href=\".*\">"")

每次我这样做时,它都会打印出来。我做了一个 s.contains 但结果是错误的。正如我所说,我对正则表达式很讨厌 - 我认为这个可能足够简单易用,但显然我错了。我的问题出在哪里?

谢谢大家!

最佳答案

有几个问题,首先您缺少关闭 anchor 标记 </a>在你的例子中。在你的正则表达式中,你需要转义任何 /字符,使它们看起来像 \/ 。您的string.replace语句看起来缺少搜索内容部分 see java manual

描述

此正则表达式将查找标题属性为 alwaysTheSameTitle 的所有 anchor 标记。 。该表达式确实要求属性值用单引号或双引号引起来。一旦找到,表达式将捕获 href 属性值以及打开和关闭 anchor 文本之间的字符串。该表达式将允许 href 和 title 属性以任意顺序出现在 anchor 标记中。

<a\b(?=\s)(?=[^>]*\s\btitle=(["'])alwaysTheSameTitle\1)(?=[^>]*\s\bhref=(["'])((?:(?!\2)|.)*)\2)[^>]*>(.*?)<\/a>

enter image description here

组 0 将拥有从开始标记到结束标记的整个 anchor 标记

  1. 将具有单引号或双引号类型,这用于 \1验证 title 周围有正确的结束字符属性值
  2. 将具有单引号或双引号类型,这用于 \2验证 href 周围有正确的结束字符属性值
  3. 将具有 href 属性值字符串,不包括引号
  4. 将字符串包裹在 anchor 标记内

匹配示例

给定输入文本<span class="alwaysTheSameClass"><a title="alwaysTheSameTitle" href="differentEveryTime">TextImTryingToPull</a></span><br>

比赛

[0] => <a title="alwaysTheSameTitle" href="differentEveryTime">TextImTryingToPull</a>
[1] => "
[2] => "
[3] => differentEveryTime
[4] => TextImTryingToPull

免责声明

内部文本确实应该使用 html 解析引擎来提取,这将避免正则表达式解析 HTML 文本失败的有问题的边缘情况。但是,如果您可以控制 HTML 和/或您愿意接受由晦涩、罕见或非法 html 组成的罕见边缘情况的风险,其中该表达式无法按预期工作,那么正则表达式可能适合您

关于java - URL anchor 文本正则表达式提取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com