提问人:Tom 提问时间:11/11/2023 最后编辑:Wiktor StribiżewTom 更新时间:11/11/2023 访问量:66
Regex - 在 C 中获取 html 标签之间的文本#
Regex - Get text between html tags in C#
问:
我正在尝试在 C# 中获取 2 个 html 标签之间的文本。providerKey 值会经常更改,并且可以有多个这样的标记。我正在尝试获得此值 - Barry Todd Smith,医学博士 (129461)
<div class="headerLink">
<a href="/AffiliationLetters/VerificationLetter/Report?providerKey=_OG4no3ZLu0SfzRBHPwVs95CgOPx7T9VDVn8RVKS4_9JprRJP-OAjHe20&reportKey=7ILaIBnEn9QuHG42XVvQmn_48-fachhNjhjPccErrPn5oEhDIgWjtHRy0&filtered=True" target="blank">Barry Todd Smith, MD (129461)</a>
</div>
这是我为正则表达式准备的。第一个是 till - 第二个是 till 。target="blank">
- </a>
<a href="\/AffiliationLetters\/VerificationLetter\/Report[\\?]providerKey[=](.*?)>
<a href="\/AffiliationLetters\/VerificationLetter\/Report[\?]providerKey[=](.*?)<\/a>
答:
1赞
lidqy
11/11/2023
#1
使用 HTML 解析器或 HTMLDom 库肯定更方便,也非常可靠,但如果由于某种原因不能使用一个,您可以使用正则表达式来做到这一点,只需跳过第一个右尖括号和下一个左尖括号之间的所有内容 - 而不必过多注意两者之间的属性。
string html = @"<div class=""headerLink"">
<a href=""/AffiliationLetters/VerificationLetter/Report?providerKey=_OG4no3ZLu0SfzRBHPwVs95CgOPx7T9VDVn8RVKS4_9JprRJP-OAjHe20&reportKey=7ILaIBnEn9QuHG42XVvQmn_48-fachhNjhjPccErrPn5oEhDIgWjtHRy0&filtered=True"" target=""blank"">Barry Todd Smith, MD (129461)</a>
</div>";
var match = Regex.Match(html, "<a [^<>]+>([^<>]*)");
var anchorValue = match.Result("$1"); // contains 'Barry Todd Smith ...'
如果 href-value 中有未转义的 < 或 > 个字符,它将失败。
评论
0赞
Etienne de Martel
11/12/2023
根据我的经验,人们使用正则表达式来解析 HTML 的原因是他们认为正则表达式是解析任何内容的唯一方法,他们不知道还有其他选择。
0赞
Tom
11/12/2023
我有一根绳子。但是当我尝试将其转换为 HTML 文档时,它出错了。这就是我使用正则表达式的原因。HtmlDocument doc = 新 HtmlDocument();医生。负载(结果);医生。。Load(results) 给了我一个非法字符的错误。
上一个:没有编写正确的正则表达式集
评论