3

我得到以下文字:

1. This is a text
where each item can span over multiple lines
2. that I want to
extract each seperate
item from
3. How can I do that?

我在 refiddle 中尝试了这个正则表达式:

/([\d]+\.)(.*)/s

但我不确定它是贪婪的(只返回一个项目)还是提取所有项目。但是当我在 C# 中尝试它时,正则表达式不匹配任何东西。

我究竟做错了什么?

更新

它很好用,但没有用,因为\s在 .NET 中似乎不起作用。我可以自己修复行尾(因为它们已被剥离)。但是如何使正则表达式不贪婪?是否可以说类似

匹配数字+点,然后取除下一个数字+点之外的所有内容

4

1 回答 1

6
string input = @"1. This is a text
    where each item can span over multiple lines
    2. that I want to
    extract each seperate
    item from
    3. How can I do that?";
string pattern = @"([\d]+\. )(.*?)(?=([\d]+\.)|($))";
var matches = Regex.Matches(input, pattern, RegexOptions.Singleline);

foreach(Match match in matches)
{
    Console.WriteLine(match.Groups[2].Value);
}
于 2013-03-28T10:11:22.627 回答