Я был в этом более часа, без успеха, и это делало мою голову.
Я пытаюсь создать Regex, который соответствует этой строке {Date HH: MM: ss}, но здесь трюк, HH, MM и ss являются необязательными, но это должно быть "HH", а не только "H" (то же самое относится к MM и ss). Если появляется одно "H", строка не должна совпадать.
Я знаю, что могу использовать H {2} для соответствия HH, но я не могу использовать эту функциональность плюс? для совпадения нуля или одного времени (ноль, поскольку он является необязательным, и один раз макс).
Пока я делаю это (что явно не работает):
Regex dateRegex = new Regex(@"\{Date H{2}?:M{2}?:s{2}?\}");
Пожалуйста, помогите мне и извините за вопрос noob.
FB.
Следующий вопрос, теперь, когда у меня есть совпадение в первой строке, я хочу взять только часть HH: MM: ss и поместить ее в другую строку (это будет формат объекта TimeStamp).
Я использовал тот же подход, например:
Regex dateFormatRegex = new Regex(@"(HH)?:?(MM)?:?(ss)?");
Но когда я пытаюсь это сделать на "{Date HH: MM}", я не получаю совпадений, почему?
EDIT: если я добавляю пробел, подобный этому Regex dateFormatRegex = new Regex(@" (HH)?:?(MM)?:?(ss)?");
, я получаю результат, но мне не нужно пространство...
Я думал, что для первого родительского элемента нужно было экранировать, но (в этом случае я не буду работать, потому что это не родительский элемент, который является частью строки, которая соответствует, но ключевому символу.