регулярное выражение Java - PullRequest
0 голосов
/ 23 мая 2011

Я ищу выражение reg, которое имеет то же значение, что и оператор "*" в командной строке linux / windows.Например, найдите все файлы, которые: начинаются с 0 или более случайных символов, содержат «abc» в середине и заканчиваются 0 или более случайными символами.

Итак, что-то подобное в Java:

if (test.match("*abc*"))
    System.out.println("found match");

Ответы [ 3 ]

5 голосов
/ 23 мая 2011

Оригинальный ответ:

.*abc.*

Регулярное выражение, которое решает вашу проблему. Обратите внимание, что если вы хотите сопоставить символ новой строки как часть вашей тестовой строки, вам может потребоваться включить однострочный режим.

Исправленный ответ, если вы действительно говорите о файлах:

[^/]*abc[^/]*

- лучший ответ, так как глобусы на самом деле не совпадают с каталогами в "*". Например, / etc / * bar будет соответствовать / etc / foobar, но не будет соответствовать / etc / foo / bar. Тем не менее, вы сказали, что не интересуетесь именами файлов, поэтому разница может быть для вас несущественной.

2 голосов
/ 23 мая 2011

* в Unix выражается как (.*) в регулярных выражениях.

if (test.match("(.*)abc(.*)")) { /* ... */ }
1 голос
/ 23 мая 2011

Звучит так, будто вы хотите « glob » больше, чем полное регулярное выражение. Проверьте эту страницу http://download.oracle.com/javase/tutorial/essential/io/find.html

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