Справка по регулярным выражениям Java - PullRequest
1 голос
/ 24 августа 2009

Я пытаюсь написать регулярное выражение для метода Java String.matches (regex) для соответствия расширению файла. Я пробовал. *. Ext, но это не соответствует файлам, оканчивающимся на .ext, только ext Затем я попытался .*\.ext, и это сработало в тестере регулярных выражений, но в Eclipse я получаю неверную ошибку escape-последовательности. Кто-нибудь может мне с этим помочь? Спасибо

Ответы [ 4 ]

4 голосов
/ 24 августа 2009

Вот тестовая программа, которая показывает регулярное выражение для использования:

public class Demo {
    public static void main(String[] args) {
        String re = "^.*\\.ext$";
        String [] strings = new String[] {
            "file.ext", ".ext",
            "file.text", "file.ext2",
            "ext"
        };
        for (String str : strings) {
            System.out.println (str + " matches('" + re + "') is " +
                (str.matches (re) ? "true" : "false"));
        }
    }
}

и вот вывод (слегка отредактированный для "beauty"):

file.ext   matches('^.*\.ext$') is true
.ext       matches('^.*\.ext$') is true
file.text  matches('^.*\.ext$') is false
file.ext2  matches('^.*\.ext$') is false
ext        matches('^.*\.ext$') is false

Но на самом деле вам это не нужно, простой

str.endsWith (".ext")

отлично подойдет и для этой конкретной работы.

Если вам нужно, чтобы сравнение было без учета регистра (.EXT, .eXt, ...) для Windows, вы можете использовать:

str.toLowerCase().endsWith(".ext")
2 голосов
/ 24 августа 2009

Для такого простого сценария, почему бы вам просто не использовать String.endsWith ?

2 голосов
/ 24 августа 2009

В eclipse (java) строка regex должна быть "экранирована":

".*\\.ext"
0 голосов
/ 24 августа 2009

Соответствует точке, за которой следует ноль или более недоточек и конец строки:

\.[^.]*$

Обратите внимание, что если это строковый литерал Java, вам необходимо экранировать обратную косую черту:

Pattern p = Pattern.compile("\\.[^.]*$");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...