C# 如何循环并仅提取到标记之间的数据?

C# 如何循环并仅提取到标记之间的数据?,c#,C#,因此,我有大量的HTML文本,我想提取每次出现和之间的所有数据。我有一些代码可以定位第一次出现的HTML文本并提取第一次出现的HTML文本,但似乎无法循环它 我尝试过循环,因为整篇文章中出现的次数 我尝试过循环它并删除一个事件和(和)之间的文本,但这似乎也不起作用 var startTag = $"<p>"; var endTag = $"</p>"; int count = 0; string ImpureCText = "<p>hello this is

因此,我有大量的HTML文本,我想提取每次出现
之间的所有数据。我有一些代码可以定位第一次出现的HTML文本并提取第一次出现的HTML文本,但似乎无法循环它

我尝试过循环,因为整篇文章中出现的次数

我尝试过循环它并删除一个事件和(
)之间的文本,但这似乎也不起作用

var startTag = $"<p>";
var endTag = $"</p>";
int count = 0;
string ImpureCText = "<p>hello this is the first part</p>fgbtfhsgs <p> this is the second part</p> <p> this is the third part</p>";

int index1 = ImpureCText.IndexOf(startTag);
int index2 = ImpureCText.IndexOf(endTag);
foreach (Match match in Regex.Matches(ImpureCText, startTag))
{
    count++;
}
Console.WriteLine("'{0}'" + " Found " + "{1}" + " Times", startTag, count);

for (int i = 0; i < count; i++)
{
    //Do code stuff
    string delete = ImpureCText.Remove(ImpureCText.IndexOf("<p>"), ImpureCText.IndexOf("</p>"));
    Console.WriteLine(delete);
}

Console.ReadKey();
var startTag=$””;
var endTag=$”

”; 整数计数=0; 字符串inpurectext=“你好,这是第一部分

fgbtfhsgs这是第二部分

这是第三部分

”; int index1=不可输入的文本.IndexOf(startTag); int index2=inpurectext.IndexOf(endTag); foreach(Regex.Matches中的匹配(inpurectext,startTag)) { 计数++; } WriteLine(“{0}'”+”找到“+”{1}”+“次”,startTag,count); for(int i=0;i”); 控制台写入线(删除); } Console.ReadKey();
尝试一个正则表达式,如
(.*)

话虽如此,用正则表达式解析html可能被认为是糟糕的风格

实例
string inpurectext=“你好,这是第一部分

fgbtfhsgs这是第二部分

这是第三部分

”; var matches=Regex.matches(inpurectext,“(.*)”

”; foreach(匹配中的var m) { Console.WriteLine(m.ToString()); }
印刷品

<p>hello this is the first part</p>
<p> this is the second part</p>
<p> this is the third part</p>
你好,这是第一部分

这是第二部分

这是第三部分


编辑
“坏风格”指的是(感谢@mjwills找到它)。尽管有一个有趣的公认答案,正则表达式和html可以成功地协同工作,特别是当解析的html受到限制时。

如果您想解析html,请使用google for
html Agility Pack
。不要使用正则表达式。
<p>hello this is the first part</p>
<p> this is the second part</p>
<p> this is the third part</p>