Regex -在C#中的html标签之间获取文本

pkln4tw6  于 12个月前  发布在  C#
关注(0)|答案(1)|浏览(134)

我试图在C#中获取2个html标签之间的文本。providerKey值经常会更改,并且可能有多个这样的标签。我试图获取此值-巴里托德史密斯,医学博士(129461)

<div class="headerLink">

<a href="/AffiliationLetters/VerificationLetter/Report?providerKey=_OG4no3ZLu0SfzRBHPwVs95CgOPx7T9VDVn8RVKS4_9JprRJP-OAjHe20&amp;reportKey=7ILaIBnEn9QuHG42XVvQmn_48-fachhNjhjPccErrPn5oEhDIgWjtHRy0&amp;filtered=True" target="blank">Barry Todd Smith, MD                                                       (129461)</a>

</div>

字符串
下面是我的正则表达式,第一个是till -target="blank">,第二个是till - </a>

<a href="\/AffiliationLetters\/VerificationLetter\/Report[\\?]providerKey[=](.*?)>

<a href="\/AffiliationLetters\/VerificationLetter\/Report[\?]providerKey[=](.*?)<\/a>

uinbv5nw

uinbv5nw1#

使用HTML解析器或HTMLDom-library当然更方便,也非常可靠,但如果出于某种原因,使用一个不是一个选项,你可以用正则表达式来做,而不会有太多的麻烦,只需跳过第一个右尖括号和下一个左尖括号之间的所有内容-而不必太注意中间的属性。

string html = @"<div class=""headerLink"">    
<a href=""/AffiliationLetters/VerificationLetter/Report?providerKey=_OG4no3ZLu0SfzRBHPwVs95CgOPx7T9VDVn8RVKS4_9JprRJP-OAjHe20&amp;reportKey=7ILaIBnEn9QuHG42XVvQmn_48-fachhNjhjPccErrPn5oEhDIgWjtHRy0&amp;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值中有未转义的字符,它将失败< or >。

相关问题