使用正则表达式在c#中拆分字符串

时间:2015-04-07 04:17:35

标签: c# regex

我在“.ini”文件中有这样的字符串:

DateTimeFormat={"MMM dd hh:mm:ss","dd/MMM/yyyy:hh:mm:ss","yyyy-MM-dd hh:ss:mm.fff","MMM, dd yyyy"}
DateTime contain any posible format datetime we have. 

或者作为C#字符串:

string DateTimeFormat= "{\"MMM dd hh:mm:ss\",\"dd/MMM/yyyy:hh:mm:ss\",\"yyyy-MM-dd hh:ss:mm.fff\"}";

我想将字符串拆分为结果:

string[] result = {"MMM dd hh:mm:ss","dd/MMM/yyyy:hh:mm:ss","yyyy-MM-dd hh:ss:mm.fff"}

如何在C#中使用正则表达式进行拆分(我希望以“开始”和“结束”拆分

2 个答案:

答案 0 :(得分:1)

将其拆分为逗号并删除{}和"

s.Split(new [] { ',', '{', '}', '"' }, StringSplitOptions.RemoveEmptyEntries)

或使用相同技术的Regex和一些Linq

Regex.Split(s, "[,\"{}]").Where(e => e.Length >0).ToArray()

答案 1 :(得分:0)

您可以使用匹配而不是分割,LINQ可以将所有捕获的组添加到数组中(将System.Xml.LinqSystem.Linq添加到using语句中:

var DateTimeFormat = "{\"MMM dd hh:mm:ss\",\"dd/MMM/yyyy:hh:mm:ss\",\"yyyy-MM-dd hh:ss:mm.fff\"}";
var matches = Regex.Matches(DateTimeFormat, @"""([^""]+)""");
var res42 = matches.Cast<Match>().Select(p => p.Groups[1].Value).ToArray();

"([^"]+)"正则表达式假设您在引用的值中没有转义双引号。如果您需要考虑转义报价,可以使用(?<!\\)"(.+?)(?<!\\)"正则表达式(@"(?<!\\)""(.+?)(?<!\\)""")。但我不相信这种情况。

输出:

enter image description here