我有一个这种格式的字符串:
ABCD_EFDG20120700.0.xml
这有一个模式,它有三个部分:
_
”之前的字符集,“ABCD
”EFDG
”_
”
20120700.0.xml
我可以拆分原始字符串,并使用此开关从拆分结果中的第二个元素中获取数字:
\d+
Match m = Regex.Match(splitname[1], "\\d+");
仅返回“20120700
”。但我需要'20120700.0
'。
如何获取所需的字符串?
答案 0 :(得分:1)
您可以扩展正则表达式以查找任意数量的数字,然后再查看句点,然后再搜索任意数量的数字:
Match m = Regex.Match(splitname[1], "\\d+\\.\\d+");
虽然有了这样的正则表达式,你甚至不需要拆分字符串:
string s = "ABCD_EFDG20120700.0.xml";
Match m = Regex.Match(s, "\\d+\\.\\d+");
string result = m.Value; // result is 20120700.0
答案 1 :(得分:0)
我可以建议您使用一个正则表达式操作,如下所示:
var rgx = new Regex(@"^([^_]+)_([^\d.]+)([\d.]+\d+)\.(.*)$");
var matches = rgx.Matches(input);
if (matches.Count > 0)
{
Console.WriteLine("{0}", matches[0].Groups[0]); // All input string
Console.WriteLine("{0}", matches[0].Groups[1]); // ABCD
Console.WriteLine("{0}", matches[0].Groups[2]); // EFGH
Console.WriteLine("{0}", matches[0].Groups[3]); // 20120700.0
Console.WriteLine("{0}", matches[0].Groups[4]); // xml
}