#java #regex
#java #регулярное выражение
Вопрос:
Как использовать регулярное выражение для обнаружения и имеет косую черту в path. Также с числами
Пример строки str = «/urpath/23243/imagepath/344_licensecode/» Я хочу использовать регулярное выражение, чтобы убедиться, что путь соответствует числам с косой чертой. соответствие формату должно быть таким «/ 23243 /»
Есть идеи, ребята?
Спасибо
Комментарии:
1. извините. просто пример. Отредактировано
2. Я вижу, вы нашли ответ на свой вопрос. Не могли бы вы также принять ответ, пожалуйста ( принятие ответов: как это работает? ). Это действительно важная часть StackOverflow, большое вам спасибо.
Ответ №1:
Вам нужно экранировать специальный символ /
с помощью
. Однако
Java также использует экранирующий символ, но вы хотите передать сам символ в регулярное выражение, поэтому он экранируется для регулярных выражений. Вы делаете это, экранируя escape-символ с \
помощью . Итак, в общей сложности у вас будет \/
косая черта.
Используйте этот фрагмент:
String input = ...
Pattern pattern = Pattern.compile("\/23243\/");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("Does match!");
} else {
System.out.println("Does not match!");
}
Вы можете попробовать само регулярное выражение в regex101: regex101 /RkheRs
Комментарии:
1. Спасибо за ответ. как шаблон соответствует только числам вместо 23243 «?
2. Шаблон изменится на этот шаблон pattern = Pattern.compile(«\/[^0-9]\/»); но выдает ошибки
3. Числа — это d . И косая черта не является специальным символом, поэтому вам не нужно этого избегать. Вероятно, вам нужен «/ \ d /» в Java.
4. Для этого вы можете использовать
digit-class
регулярное выражение of, оно естьd
. Такd
соответствует одной цифре.dd
соответствует двум цифрам, вы также можете использоватьd{2}
для этого. Или используйтеd{1, 4}
, который соответствует от одной до четырех цифр.d*
сопоставляет ноль с произвольным,d
сопоставляет единицу с произвольным иd?
сопоставляет ноль с одной цифрой.5. Вы уверены, что
/
это не специальный символ (для регулярных выражений)? В регулярном выражении101 говорится: » ошибка,/
должна быть экранирована — специальный разделитель «.
Ответ №2:
Я нашел свой ответ.Благодаря Mgaert
List<String> listArray = new ArrayList<String>();
listArray.add(file.getCanonicalPath());
// Regular expression in Java to check if String is number or not
Pattern pattern = Pattern.compile("/\d /");
for (String path: listArray) {
// Match patter for numbers path
Matcher matcher = pattern.matcher(path);
if (matcher.find()) {
System.out.println("Does match!" path);
} else {
System.out.println("Does Not match!");
}
}