c# - 如果文本不在某些指定的 HTML 标记内,则替换文本

标签 c# regex

我有一个应该替换的单词列表 HTML 页面,但前提是单词不在标签列表中(如 A B I)

所以如果有文本:

<p> some text and XXX term <a href="http://some-XXX-bla.com">good morning XXX world</a> other text and XXX term <b>another XXX inside other sentance</b> </p>

XXX 应替换为 YYY,最终文本应为:

<p> some text and YYY term <a href="http://some-XXX-bla.com">good morning XXX world</a> other text and YYY term <b>another XXX inside other sentance</b> </p>

仅当 XXX 不在限制标签列表(A、I、B)内时,YYY 才替换 XXX

应该以某种方式在 C# regex 中完成

非常感谢您的帮助:)

最佳答案

这已经说过很多次了,但我不妨在这里重复一遍……你真的不想使用正则表达式来进行 HTML 解析。它根本不适合 HTML 的复杂性(用正则表达式解析比乍看起来要难很多)。

.NET 的最佳选择是 HTML Agility Pack ,这是一个非常强大的库,可以正确解析任何形式的 HTML“汤”。它也更易于操作,因为它公开了 DOM 结构。这将使您能够简单地遍历 DOM 并轻松检查父/祖先节点,以便可以通过更改适当元素的 InnerText 属性来执行替换。完成所有操作后,只需简单调用即可从修改后的 DOM 对象输出原始 HTML。

关于c# - 如果文本不在某些指定的 HTML 标记内,则替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/960709/

相关文章:

正则表达式搜索嵌套括号

c# - O(1) 哈希查找?

C# 优化新对象的创建(太多,丑陋的代码)

c# - 查询问题 - 在 sql navigator 中运行查询时返回行,但不在我的 c# 程序中

java - 使用 .NET 创建复制 Java 代码的 Base 64 字节数组

ruby - 类型不匹配 : String given - Trying to match strings in ruby

c# - 为 ASP.NET 实现 HierarchicalDataBoundControl

javascript - 正则表达式(替换所有非数字字符并强制执行 2 个小数位数字)

regex - Django 文档,第 3 部分理解问题

python - Django - urls.py - 带有井号/井号 (#) 符号的文件名?