Я хочу найти строку ????\??-?? в D:\it\2020\02-20\123\13.json. ? - это цифра.
Как я могу найти его с помощью регулярного выражения Java?
Используйте \\ в своем регулярном выражении, он должен работать
почти уверен, что вам понадобится двойная обратная косая черта
Вы должны избегать обратной косой черты в java, чтобы у вас был String backslash = "\\";, и когда вы хотите использовать обратную косую черту в регулярном выражении, вам также нужно избегать ее, поэтому вам нужен String regex = "\\\\";




При написании регулярного выражения в java мы экранируем символ \ с помощью другой обратной косой черты. Поэтому, если вы хотите поставить один символ обратной косой черты, вам следует использовать \\, но если вы хотите избежать обратной косой черты, вы делаете это с помощью \\\\. Следующее регулярное выражение должно нормально работать в вашем случае:
\\d+\\\\\\d+-\\d+
Если вы хотите быть конкретным, используйте:
\\d{4}\\\\\\d{2}-\\d{2}
Я предпочитаю писать String regex = "[0-9]{4}\\\\[0-9]{2}-[0-9]{2}", чтобы уменьшить количество обратной косой черты, чтобы ее легче не пропустить.
@devpuh Значит, по вашему мнению, чтобы не допустить появления обратной косой черты, мы должны сделать ее нечитаемой?
@round Единственное изменение в том, что \\d заменен на [0-9], так что у вас больше нет \\\\\\d. Подождите, это был \\\\\\d или \\\\\d, что делают все обратные косые черты?
@devpuh В этом нет необходимости. Тот, кто может понять вариант использования четырех обратных косых черт, также поймет, что используют шесть подряд. Ваш комментарий не имеет смысла.
"D:\it\2020\02-20\123\13.json".indexOf("2020\02-20")