[英]Regular Expression Pattern C#
我有以下字符串,需要我通过C#中的Regex对其进行解析。
格式:rec_mnd.rate.current_rate.sum。 数量:214345
我想将粗体字符提取为groupcollection中的组对象。
QWD = 1组RET = 1组214345 = 1组
消息模式是什么样的?
就像这样:
string s = "Format: rec_mnd.rate.current_rate.sum.QWD.RET : 214345";
Match m = Regex.Match(s, @"^Format: rec_mnd\.rate\.current_rate\.sum\.(.+?)\.(.+?) : (\d+)$");
if( m.Success )
{
Console.WriteLine(m.Groups[1].Value);
Console.WriteLine(m.Groups[2].Value);
Console.WriteLine(m.Groups[3].Value);
}
前两组中的问号使该量词变得懒惰:它将捕获最少数量的字符。 换句话说,它捕获到第一个.
它看到了。 另外,您可以在这些组中使用([^.]+)
,以明确捕获除句点以外的所有内容。
最后一组明确地仅捕获十进制数字。 如果你的表达可能对的右侧其他值:
你必须要改变,要.+
为好。
请给自己一个方便,并给组加上标签,以使他们更容易理解代码中正在发生的事情。
RegEx myRegex = new Regex(@"rec_mnd\.rate\.current_rate\.sum\.(?<code>[A-Z]{3})\.(?<subCode>[A-Z]{3})\s*:\s*(?<number>\d+)");
var matches = myRegex.Matches(sourceString);
foreach(Match match in matches)
{
//do stuff
Console.WriteLine("Match");
Console.WriteLine("Code: " + match.Groups["code"].Value);
Console.WriteLine("SubCode: " + match.Groups["subCode"].Value);
Console.WriteLine("Number: " + match.Groups["number"].Value);
}
不管。之间是什么,这都应该为您提供所需的内容。
@"(?:.+\.){4}(.\w+)\.(\w+)\s?:\s?(\d+)"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.