C# Regex-提取外部范围匹配值<;表>&书信电报;表></表></表>;
在这里,选择的是内部表而不是外部表。不赞成使用正则表达式这样做,但是如果必须这样做,可以定义一些边界,例如:C# Regex-提取外部范围匹配值<;表>&书信电报;表></表></表>;,c#,regex,C#,Regex,在这里,选择的是内部表而不是外部表。不赞成使用正则表达式这样做,但是如果必须这样做,可以定义一些边界,例如: var htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml(htmlInput); var output = htmlDocument.DocumentNode .SelectNodes("table/tr"); (?Regex不是用于此目的的
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(htmlInput);
var output = htmlDocument.DocumentNode
.SelectNodes("table/tr");
(?Regex不是用于此目的的合适工具。请使用.Use-HtmlAgilityPack解析HTML并提取相关节点。Regex对于这些任务来说过于核心。如上所述,Regex不是合适的方法。但是出于兴趣,您需要一些第1组的内容
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);
}
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(htmlInput);
var output = htmlDocument.DocumentNode
.SelectNodes("table/tr");
(?<=<table>)\s*<tr>\s*<td>([a-z0-9 ]*)<\/td>\s*<\/tr>
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<=<table>)\s*<tr>\s*<td>([a-z0-9 ]*)<\/td>\s*<\/tr>";
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>";
RegexOptions options = RegexOptions.Singleline | RegexOptions.IgnoreCase;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}