HTML匹配文本,什么正则表达式将匹配文本,不包括HTML标记内的内容?

"博客讨论了在搜索结果中高亮显示关键词时遇到的问题,特别是当关键词可能出现在HTML标签内的场景。作者提到当前的实现有时会导致HTML属性如"class"被错误地高亮。寻求一个正则表达式解决方案,该方案能够确保匹配只发生在HTML标签之外,避免与HTML元素内的属性混淆。"
摘要由CSDN通过智能技术生成

我正在为需要突出显示搜索字词的搜索结果页面编写代码。这些术语碰巧发生在表格单元格中(应用程序正在迭代GridView行单元格),这些表格单元格可能包含HTML。

目前,我的代码看起来像这样(相关的帅哥如下所示):

const string highlightPattern = @"$0";

DataBoundLiteralControl litCustomerComments = (DataBoundLiteralControl)e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Controls[0];

// Turn "term1 term2" into "(term1|term2)"

string spaceDelimited = txtTextFilter.Text.Trim();

string pipeDelimited = string.Join("|", spaceDelimited.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries));

string searchPattern = "(" + pipeDelimited + ")";

// Highlight search terms in Customer - Comments column

e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Text = Regex.Replace(litCustomerComments.Text, searchPattern, highlightPattern, RegexOptions.IgnoreCase);

令人惊讶的是它有效。但是,有时我匹配的文本是HTML,如下所示:

Fred was a classy individual.

如果你搜索“class”我希望突出显示代码将“class”包装在“classy”中,但当然不是那里恰好存在的HTML属性“class”!如果您搜索“Fred”,则应突出显示。

那么什么是一个好的正则表达式,以确保匹配只发生在html标签之外?它不一定是超级铁杆。只需确保匹配不在<和>我认为会很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值