C# 在C语言中结合正则表达式提取数据#
我有一个字符串,其中包含硬编码为以下格式的HTML:C# 在C语言中结合正则表达式提取数据#,c#,regex,tuples,C#,Regex,Tuples,我有一个字符串,其中包含硬编码为以下格式的HTML: <span class="Marker" id="a">Some text 1</span><br> <span class="Marker" id="b">Some text 2</span><br> <span class="Marker" id="c">Some text 2</span><br> <p class="ina
<span class="Marker" id="a">Some text 1</span><br>
<span class="Marker" id="b">Some text 2</span><br>
<span class="Marker" id="c">Some text 2</span><br>
<p class="inactive">Some text 4</p>
<p class="inactive">Some text 5</p>
一些文本1
一些文本2
一些文本2
一些文本4
一些文本5
我的目标是迭代每一行并:
//(?<=>) -> Lookbehind
//(?=<) -> Lookahead
var matches = Regex.Matches(htmlString, "(?<=>)([^<]+)(?=<)");
List<string> list = new List<string>();
foreach (Match match in matches)
{
list.Add(match.Value);
}
var classes = Regex.Matches(html, "(?<=<span class=\")([A-Za-z]+)(?=\")");
List<bool> isPresentList = new List<bool>();
foreach (Match cl in classes)
{
bool isPresent = cl.ToString().Equals("Marker", StringComparison.Ordinal);
isPresentList.Add(isPresent);
}
/(?)->向后看
//(?=前瞻
var matches=Regex.matches(htmlString,(?)([^下面这样的正则表达式怎么样
<([\w]*) class="(\w*)"[ =\w"]*>([ \w]*)<\/\1>
RegEx是处理XML/HTML的一个非常糟糕的工具。为什么不使用一个专门为它设计的工具呢?例如,这就完成了我的工作,因为HTML不会改变这种格式。我已经为您更新了RegEx,我想它更接近您想要的。您的解决方案在web链接上工作得很好,但是当我在C中使用它时,var matches=Re如下gex.Matches(html,“尝试检索单个组。快速提问,我已将最后一个组更改为((.*)),因为我的字符串可以包含标点符号。需要两组括号吗?如果内部正则表达式表示“任何字符零次或多次”那为什么还要在后面加上括号呢?我想你是对的,你不需要额外的括号。