如何拆分那些正则表达式

时间:2016-08-02 04:55:30

标签: c# regex

这里我有以下字符串,

"#,##0.00"
"\"$\"#,##0.0000"

我需要使用正则表达式进行拆分。

我的预期输出是

"#,##0.00" => 2 (decimal)
"\"$\"#,##0.0000" => $4(4 decimal with $)

如何转换,请以任何方式建议。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

^(?:"([^"]+)")?.*?(0+)$

模式匹配:

  • ^ - 字符串开头
  • (?:"([^"]+)")? - 1或0个序列:
    • " - 双引号
    • ([^"]+) - 第1组捕获除"
    • 以外的1个或多个字符
    • "
  • .*? - 换行以外的任何字符,0或更多重复
  • (0+) - 第2组捕获1个或多个零
  • $ - 字符串结尾

这是一个C#演示:

var pat = @"^(?:""([^""]+)"")?.*?(0+)$";
var match = Regex.Match("#.##0.00", pat);
if (match.Success) {
    Console.WriteLine(match.Groups[1].Value + match.Groups[2].Length.ToString());
} // => 2
// With "\"$\"#,##0.0000" input: $4

请参阅IDEONE demo