我在stackoverflow上发现了这篇文章
highlight words in html using regex & javascript - almost there
使用上面的文章,我试图使用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>
结果将突出显示文本和图像名称。
非常感谢任何帮助。
答案 0 :(得分:4)
我会提供一个解决方案,但我同意仅使用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);