C # регулярное выражение для 2018-09-24 22: 42: 02.071042000 - PullRequest
0 голосов
/ 25 сентября 2018

Цель: нужно извлечь строку «2018-09-24 22:42:02» из строки ниже:

-rw-rw-rw- 1 rats 38K 2018-09-24 22:42:02.071042000 +0000 /prod/data/automation_sent/20180924/11/20180924_1100600.sps

Я попробовал следующие выражения reg, но они, похоже, не работают с моимстрока выше:

Разделитель без экранирования должен быть экранирован обратной косой чертой ():

\d{4}(?:/\d{1,2}){2} 

изменен на

\d{4}(?:\/\d{1,2}){2} 

и получен неверная строка

\d{4}[- /.]([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])

нет совпадений:

\d{4}$|^\d{4}-((0?\d)|(1[012]))-(((0?|[12])\d)|3[01]) 

не уверен, что мне не хватает ... любая помощь приветствуется,

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

https://www.regextester.com/97766 имеет хорошее сопоставление для дат ISO.Вы можете использовать это регулярное выражение, но удалите ^ и & и замените T пробелом.

Полученное регулярное выражение будет (-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9]) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?

0 голосов
/ 26 сентября 2018

как насчет этого?

        string input = @"-rw-rw-rw- 1 rats 38K 2018-09-24 22:42:02.071042000 +0000 /prod/data/automation_sent/20180";
        string regex = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";

        var match = Regex.Match(input, regex);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...