Шаблон RegEx не утверждает истину - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь сравнить приведенную ниже строку с шаблоном регулярного выражения в моем проекте Java:

2018-11-12 12: 02: 04.075

Я передал приведенную выше строку в онлайн-генератор регулярных выражений, чтобы сгенерировать следующий шаблон:

((?: 2 | 1) \ d {3} (: - | \ /) (:( ?: 0 [1-9]) | (: 1 [0-2])) (: - |?? \ /) (:( ?: 0 [1-9]) | (: [1-2] [0-9]) | (?: 3 [0-1])) (?: Т | \ с) (?:? (: [0-1] [0-9]) | (?:? 2 [0-3])): (: [0-5] [0-9]): (: [0-5] [0-9]))

Ниже мое утверждение ASSERT, но когда я запускаю этот тест, я получаю ошибку подтверждения:

assertTrue(rs.getString(this.columnName).matches("((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]))"));

Какие изменения мне нужно внести, чтобы пройти этот тест?Это проблема с моим регулярным выражением?

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Вам не хватает части в миллисекундах. Попробуйте это:

((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9])\\.\\d{3})
0 голосов
/ 12 ноября 2018

Попробуйте это

[12]\\d{3}-(0[1-9]|1[12])-(0[1-9]|1[0-9]|2[0-9]|3[01])\\s([01][0-9]|2[0-4]):[0-5][0-9]:[0-5][0-9]\\.\\d{3}
0 голосов
/ 12 ноября 2018

Попробуйте использовать одно из следующих регулярных выражений:

((?:2|1)\d{3}(?:-|\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9].(?:[0-9][0-9][0-9])))

или

((?:2|1)\d{3}(?:-|\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]).(\d{3}))

или

(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d{3})
...