我有一个字符串:正则表达式来查找所有匹配的语句
在锅内放1把2锅内放3锅...
高达
放n in pot
如何使用C#正则表达式来获取所有put语句,如:
“把1锅”
“把2锅”
“把3罐”
...
“n放在锅里”
为n
声明?
感谢
我有一个字符串:正则表达式来查找所有匹配的语句
在锅内放1把2锅内放3锅...
高达
放n in pot
如何使用C#正则表达式来获取所有put语句,如:
“把1锅”
“把2锅”
“把3罐”
...
“n放在锅里”
为n
声明?
感谢
我可能不应该回答这个问题你的问题显示了没力气可言,但我觉得可能正则表达式是:
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);
我很感谢你的回答,我真的很喜欢正则表达式,而且我尝试了几件事情,这些对我来说都没有用。我希望你能多一点帮助我。在这种情况下,如果我要获得所有以put开始并以pot结束的语句,那么将会是正则表达式。输入字符串可以是“插入表(a,b)值(1,2)插入表(a,b)值(1,2)”并且我想要捕获所有单个插入语句“Insert into table(a ,b)值(1,2)“ ps我尝试过”put。* pot“作为正则表达式,但它返回了整个字符串作为单个匹配或”插入。*值“在这种情况下。 再次感谢 –
你需要去寻找最短的匹配('。*'是“贪婪”,因为这是最长的匹配)。使用'put。+?pot'时,最短匹配应该匹配。 –
你也可以做到这一点
var [email protected]"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
这是功课? –
你应该在发布前阅读FAQ http://stackoverflow.com/faq。 – psycho