[英]highlight words in html using regex in C#
我在stackoverflow上找到了这篇文章
使用正则表达式和JavaScript突出显示html中的单词-几乎存在
通过上面的文章,我试图使用c#在服务器上突出显示HTML文本。 代码如下所示:
string replacePattern = "$1<span style=\"background-color:yellow\">$2</span>";
string searchPattern = String.Format("(?<=^|>)(.*?)({0})(?=.*?<|$)", searchString.Trim());
content = Regex.Replace(content, searchPattern, replacePattern, RegexOptions.IgnoreCase);
除了试图突出显示图像源中包含的单词时,该代码似乎运行良好:
搜索关键字:
ABC
搜索文字:
<div><img src="/site/folder/ABC.PNG" /><br />ABC</div>
结果将突出显示文本和图像名称。
任何帮助将不胜感激。
我将提供一个解决方案,但是我同意仅使用Regex来解析HTML最终是不值得的。 就是说,与我们其他人相比,您对问题空间的了解更多,因此,如果要突出显示的HTML在您的控制之下,则您可能能够测试您的域中的足够多的内容,以使用正则表达式来实现所需的功能。
我的解决方案更改了您提供的正则表达式以采用这种方法:
注意事项:
<textarea>...</textarea>
<script>...</script>
请注意,您可以在左侧扩展捕获以捕获标签名称,并且有条件地不替换诸如textarea和script的一组标签。
string searchString = "ABC";
string content = "<div><img src='/site/folder/ABC.PNG' /><br />ABC</div>";
string replacePattern = "$1<span style=\"background-color:yellow\">$2</span>$3";
string searchPattern = String.Format("(>[^<>]*?)({0})([^<>]*?<)", searchString.Trim());
content = Regex.Replace(content, searchPattern, replacePattern, RegexOptions.IgnoreCase);
Console.WriteLine(content);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.