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