使用 C# 的正则表达式从 CDATA 解析出 html

发布于 2024-07-17 19:29:04 字数 104 浏览 9 评论 0原文

我想解析出 CDATA 中返回的所有 HTML 数据。

作为示例 已批准]]>

谢谢!

I would like to parse out any HTML data that is returned wrapped in CDATA.

As an example <![CDATA[<table><tr><td>Approved</td></tr></table>]]>

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

时光与爱终年不遇 2024-07-24 19:29:05

没有太多细节,但如果没有您未描述的复杂性,一个非常简单的正则表达式应该匹配它:

/<!\[CDATA\[(.*?)\]\]>/

Not much detail, but a very simple regex should match it if there isn't complexity that you didn't describe:

/<!\[CDATA\[(.*?)\]\]>/
想念有你 2024-07-24 19:29:05

查找 CDATA 部分的正则表达式为:

(?:<!\[CDATA\[)(.*?)(?:\]\]>)

The regex to find CDATA sections would be:

(?:<!\[CDATA\[)(.*?)(?:\]\]>)
夜雨飘雪 2024-07-24 19:29:05
Regex r = new Regex("(?<=<!\[CDATA\[).*?(?=\]\])");
Regex r = new Regex("(?<=<!\[CDATA\[).*?(?=\]\])");
生来就爱笑 2024-07-24 19:29:05

为什么要使用正则表达式来完成如此简单的任务?
试试这个:

str = str.Trim().Substring(9);
str = str.Substring(0, str.Length-3);

Why do you want to use Regex for such a simple task?
Try this one:

str = str.Trim().Substring(9);
str = str.Substring(0, str.Length-3);
下壹個目標 2024-07-24 19:29:04

处理示例的表达式是

\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>

“文本”组将包含您的 HTML 的位置。

您需要的 C# 代码是:

using System.Text.RegularExpressions;
RegexOptions   options = RegexOptions.None;
Regex          regex = new Regex(@"\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>", options);
string         input = @"<![CDATA[<table><tr><td>Approved</td></tr></table>]]>";

// Check for match
bool   isMatch = regex.IsMatch(input);
if( isMatch )
  Match   match = regex.Match(input);
  string   HTMLtext = match.Groups["text"].Value;
end if

“输入”变量位于其中,只是为了使用您提供的示例输入

The expression to handle your example would be

\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>

Where the group "text" will contain your HTML.

The C# code you need is:

using System.Text.RegularExpressions;
RegexOptions   options = RegexOptions.None;
Regex          regex = new Regex(@"\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>", options);
string         input = @"<![CDATA[<table><tr><td>Approved</td></tr></table>]]>";

// Check for match
bool   isMatch = regex.IsMatch(input);
if( isMatch )
  Match   match = regex.Match(input);
  string   HTMLtext = match.Groups["text"].Value;
end if

The "input" variable is in there just to use the sample input you provided

安人多梦 2024-07-24 19:29:04

我知道这可能看起来非常简单,但是您尝试过 string.Replace() 吗?

string x = "<![CDATA[<table><tr><td>Approved</td></tr></table>]]>";
string y = x.Replace("<![CDATA[", string.Empty).Replace("]]>", string.Empty);

可能有更有效的方法来处理这个问题,但您可能想要那么简单的东西......

I know this might seem incredibly simple, but have you tried string.Replace()?

string x = "<![CDATA[<table><tr><td>Approved</td></tr></table>]]>";
string y = x.Replace("<![CDATA[", string.Empty).Replace("]]>", string.Empty);

There are probably more efficient ways to handle this, but it might be that you want something that easy...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文