我在“.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#中使用正则表达式进行拆分(我希望以“开始”和“结束”拆分
答案 0 :(得分:1)
将其拆分为逗号并删除{}和"
s.Split(new [] { ',', '{', '}', '"' }, StringSplitOptions.RemoveEmptyEntries)
或使用相同技术的Regex和一些Linq
Regex.Split(s, "[,\"{}]").Where(e => e.Length >0).ToArray()
答案 1 :(得分:0)
您可以使用匹配而不是分割,LINQ
可以将所有捕获的组添加到数组中(将System.Xml.Linq
和System.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();
"([^"]+)"
正则表达式假设您在引用的值中没有转义双引号。如果您需要考虑转义报价,可以使用(?<!\\)"(.+?)(?<!\\)"
正则表达式(@"(?<!\\)""(.+?)(?<!\\)"""
)。但我不相信这种情况。
输出: