如何在列表中获取正则表达式的结果列表?
我将以我的案例为例:我有以下HTML字符串代码:
<div>
<p>Hello World</p>
<p>Hello Stackoverflow</p>
<p>The book is on the table</p>
</div>
我的正则表达式过滤器如下:
<p>(.*)</p>
我正在寻找的结果如下:
<p>Hello World</p>
<p>Hello Stackoverflow</p>
<p>The book is on the table</p>
如何才能获得该结果?
答案 0 :(得分:3)
这让我们得到了所有的比赛:
var allMatches = Regex.Matches(input, pattern);
我们将此IEnumerable
转换为IEnumerable<Match>
。这是必要的,因为MatchCollection
类早于.NET泛型:
var matchesTyped = allMatches.Cast<Match>();
然后我们将匹配映射到匹配的值并将结果输出到列表中:
var matchedStrings = matchesTyped.Select(m => m.Value).ToList();
<强> TL; DR 强>
var result = Regex.Matches(input, pattern).Cast<Match>().Select(m => m.Value).ToList();
答案 1 :(得分:1)
这应该对你有用:
ColorUtils.pickColor(onColorPicked, this);
我更改了添加string str = "<div>" +
"<p>Hello World</p>" +
"<p>Hello Stackoverflow</p>" +
"<p>The book is on the table</p>" +
"</div>";
string pattern = "<p>.*?</p>";
var matches = Regex.Matches(str, pattern);
var result = matches.Cast<Match>().Select(m => m.Value.Trim()).ToArray();
foreach (var item in result)
{
//do something
}
的正则表达式,因为它只捕获了第一个?
中的一个结果,直到字符串中的最后一个<p>
。