Regex.Matches返回空结果
本文关键字:结果 返回 Matches Regex | 更新日期: 2023-09-27 18:23:53
我想从论坛页面中过滤一些论坛条目内容。论坛条目位于两个blockquote元素之间(如Regex中所示)。我想用Regex过滤掉内容。这是我正在使用的代码:
string pattern = @"(<blockquote class='"postcontent restore '">)(.*?)(</blockquote>)";
Regex test = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);
MatchCollection m = test.Matches(downloadString);
var arr = m
.Cast<Match>()
.Select(n => n.Value)
.ToArray();
foreach (string match in arr)
{
Console.WriteLine(match);
}
Console.ReadLine();
我有这个例子:
<blockquote class="postcontent restore ">
<br>
Some Stuff
<br>
Some Stuff #2
<br>
</blockquote>
我遇到的问题是返回的数组为空。你知道可能出了什么问题吗?我想这是因为空白,但我不知道如何"忽略"它们。
。匹配除换行符以外的任何字符。
您可以使用它来包括换行符:
(<blockquote class='"postcontent restore '">)('n*.*)(<'/blockquote>)
你的模式也没有使用双qoute和前斜杠的转义,所以这里是:
编辑:对不起。@存在,所以最终版本应该是:)第2版:经过完整测试的源代码。检查IsMatch或空引用是您的责任
string pattern = @"(<blockquote class='""postcontent restore '"">)+(('n*)(.*))+(</blockquote>)";
Regex test = new Regex(pattern);
MatchCollection matches = test.Matches(downloadString);
StringBuilder xmlContentBUilder = new StringBuilder();
foreach (Capture capture in matches[0].Groups[2].Captures)
{
xmlContentBUilder.Append(capture);
}
Console.WriteLine(xmlContentBUilder);