Шаблон Java Regex для вытягивания формата даты до первой косой черты - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь улучшить текущее регулярное выражение, соответствующее шаблону даты в URL. Вот что у меня есть:

.*([0-9]{4}-[0-9]{2}-.*)

Используя пример URL, такой как:

www.mywebsite.com/2019-10-10-00-00-00/someString/,

это регулярное выражение соответствует ожидаемому 2019-10-10-00-00-00/someString/

Тем не менее, я хочу улучшить его, чтобы он просто совпадал с 2019-10-10-00-00-00

Я пробовал это сделать до сих пор: .*([0-9]{4}-[0-9]{2}-[^\\\\/]*),

, избегая форварда-slash, как предложено в другом посте SO (я также пробовал один побег). Я не эксперт по Java, поэтому я протестировал его с помощью тестера регулярных выражений Java здесь , и он работает нормально, но в коде он совсем не совпадает.

Я также пытаюсьстарайтесь не использовать что-то вроде

.*([0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2})

главным образом потому, что дата может быть 2019-10-10-00-00-00, 2019-10-10-00-00, 2019-10-10-00 или чем-то еще, и потому что, безусловно, должен быть лучший способ.

Любые предложения будут хороши, или если это будет дубликат одного из множества вопросов по регулярным выражениям здесь, я с удовольствием закрою и ссылку.

1 Ответ

1 голос
/ 18 октября 2019

Прямая косая черта не является метасимволом регулярных выражений и поэтому не требует экранирования. Для однострочного решения используйте String#replaceAll:

String url = "www.mywebsite.com/2019-10-10-00-00-00/someString/";
String date = url.replaceAll(".*/(\\d{4}-\\d{2}-\\d{2}-[^/]+).*", "$1");
System.out.println("date: " + date);

Это печатает:

date: 2019-10-10-00-00-00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...