正则表达式查找所有匹配的语句

时间:2012-12-10 15:28:27

标签: c# regex pattern-matching

我有一个字符串:

  

将1放入锅中放2放入锅中放入3锅中...

直到

  

把n放进锅里

如何使用C#regex获取所有put语句,如:

  

“将1放入锅中”
  “把2放进锅里”
  “把3放在锅里”
  ...
  “把n放进锅里”

用于n语句?

由于

2 个答案:

答案 0 :(得分:3)

我可能不应该回答这个,因为你的问题根本没有表现出任何努力,但我认为可能的正则表达式是:

string regex = @"put (?<number>\d+) in pot";

然后你可以使用:

进行匹配
var matches = Regex.Matches("Put 1 in pot put 2 in pot", @"put (?<number>\d+) in pot", RegexOptions.IgnoreCase);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}

要查找实际数字,您可以使用

int matchNumber = Convert.ToInt32(match.Groups["number"].Value);

答案 1 :(得分:1)

你也可以这样做

 var reg=@"put.*?(?=put|$)";
 List<string> puts=Regex.Matches(inp,reg,RegexOptions.Singleline)
                        .Cast<Match>()
                        .Select(x=>x.Value)
                        .ToList();     

put.*?(?=put|$)
------ -------
|         |
|         |->checks if `.*?`(0 to many characters) is followed by `put` or `end` of the file
|->matches put followed by 0 to many characters