Использование Regex для разбиения строки в c # [duplicate]

1

У меня такая строка в файле.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. 

Или как строка С#:

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"}

Как я могу разделить с помощью Regex в С# (я хочу разбить с begin "и" end)

  • 0
    строка и результат совпадают? как вы хотите разделить?
  • 1
    в коде C # это не то же самое, что «строка» разбита на массив из 3 частей
Показать ещё 9 комментариев
Теги:

2 ответа

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();

Регулярное выражение "([^"]+)" предполагает, что в цитированных значениях нет экранированных двойных кавычек. Если вам нужно учитывать экранированные кавычки, вы можете использовать (?<!\\)"(.+?)(?<!\\)" regex (@"(?<!\\)""(.+?)(?<!\\)"""). Но я не думаю, что это так.

Вывод:

Изображение 174551

  • 0
    Рад, что это сработало для вас, пожалуйста, также рассмотрите возможность голосования, если это окажется полезным.
1

разбить его на запятую и избавиться от {} и "

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

или с Regex и немного Linq, используя ту же технику

Regex.Split(s, "[,\"{}]").Where(e => e.Length >0).ToArray()
  • 1
    Немного безопаснее было бы s.Trim('{', '}').Split(',') потому что он не удаляет { и } в тексте, а только в начале и конце строки.
  • 0
    отдельный вопрос, но попробуйте использовать заглавную H в течение 24 часов
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню