Как сопоставить косую черту с помощью регулярных выражений

#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!");
    }
}