gpt4 book ai didi

c# - 正则表达式 - 提取外部范围匹配值

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:08 27 4
gpt4 key购买 nike

<分区>

string input = "<table>
<tr>
<td>Text A</td>
</tr>
<tr>
<td>
<table> <!-- Notice this is an inner scope table -->
<tr>
<td>Text B</td>
</tr>
</table>
</td>
</tr>
</table>

<table>
<tr>
<td>
<table> <!-- Notice this is an inner scope table -->
<tr>
<td>Text C</td>
</tr>
</table>
</td>
</tr>
</table>

<table>
<tr>
<td>Text D</td>
</tr>
</table>"

我有一系列上述字符串格式的表格。

我想提取出所有<tr>中第一层的内容,其中预期提取的内容是:

Text A

<table>
<tr>
<td>Text B</td>
</tr>
</table>

<table>
<tr>
<td>Text C</td>
</tr>
</table>

Text D

我有以下描述我正在尝试做的正则表达式

var regexTableRow = new Regex("<tr><td>(.*?)</td></tr>");

var regexMatches = regexTableRow.Matches(htmlInput);

var tableRows = new List<string>();

foreach (Match match in regexMatches)
{
// Get a row of <tr></tr> out
var value = match.Value;

tableRows.Add(value);
}

Regex 失败的地方在于它提取了 <tr>从内部表而不是外部表。如何让 Regex 在提取过程中只关注外部表?

谢谢。

[编辑] - 谢谢,我将改用 HtmlAgilityPack。此代码面临类似问题:

var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(htmlInput);

var output = htmlDocument.DocumentNode
.SelectNodes("table/tr");

获取内部表而不是外部表的位置。

27 4 0