регулярное выражение в Java, делая поиск определенного шаблона строки? - PullRequest
0 голосов
/ 12 января 2012

Я не очень хорошо знаком с использованием выражений регулярных выражений в Java. Если у меня есть строка this/is/a/file!/path

теперь с substring и indexOf я могу найти файл имени, появляющийся между / и !, но я почти уверен, что такие задачи должны быть намного проще с помощью регулярных выражений.

Может ли кто-нибудь привести пример использования выражений регулярных выражений?

Ответы [ 4 ]

3 голосов
/ 12 января 2012

Другой способ - использовать Pattern и Matcher.Здесь вы можете использовать группы и более сложные операции

Pattern pattern = Pattern.compile(yourRegex);
Matcher matcher = pattern.matcher(yourText);
while(matcher.find()) {
   System.out.println(matcher.group(1));
}

Взгляните на

Matcher: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html

Pattern: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

Регулярное выражение в Java: http://docs.oracle.com/javase/tutorial/essential/regex/

0 голосов
/ 12 января 2012

Вы можете создать объект Pattern с регулярным выражением, а затем создать из него объект matcher для анализа вашей строки.

String regex = ".*/(.*)!";

Pattern p = Pattern.compile (regex);

Matcher m = p.matcher(StringToBeMatched);

if (m.find()) {

    String filename = m.group (1);
}
0 голосов
/ 12 января 2012

что-то как .*/([^!]*)!.* должно сделать это ... тогда вы можете использовать средство сравнения, чтобы найти 1-ю группу (часть между круглыми скобками, 0-я группа - это полное совпадение)это решение ...

0 голосов
/ 12 января 2012

Самый простой способ использования их в Java - это использование метода String.matches:

boolean matches = "abc".matches("[a-z]+");

Это даст true.

Второй способ сделать это полезенесли вы должны использовать определенный шаблон регулярных выражений много раз.Вы можете скомпилировать и использовать повторно:

Pattern pattern = Pattern.compile("[a-z]+");
Matcher matcher = pattern.matcher("abc");
boolean matches = matcher.matches();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...