Java регулярное выражение - получить определенную часть строки - PullRequest
6 голосов
/ 04 марта 2012

Я пытаюсь получить доступ к определенной части нескольких строк, следующих за шаблоном.

Вот пример того, что я пытаюсь сделать.

String s = "Hello my name is Joe";    
if(Pattern.matches(s,"Hello my name is ([\\w]*)"))
{
    System.out.println("Name entered: $1");
}

Тем не менее, мой код никогда не вводится внутри оператора if

Ответы [ 4 ]

10 голосов
/ 04 марта 2012

Поменяйте параметры на метод matches, и ваш if сработает (регулярное выражение является первым параметром, а не вторым).

Однако вы все равно не напечатаете первую группу захватас $1.Для этого:

String s = "Hello my name is Joe";    
Matcher m = Pattern.compile("Hello my name is ([\\w]*)").matcher(s);
if(m.matches())
{
    System.out.println("Name entered: " + m.group(1));
}
2 голосов
/ 04 марта 2012

Я думаю, что вы ищете это:

final String s = "Hello my name is Joe";
final Pattern p = Pattern.compile("Hello my name is (\\w++)");
final Matcher m = p.matcher(s);
if (m.matches()) {
   System.out.printf("Name entered: %s\n", m.group(1));
}

Это будет захватывать значение группы \w++, только если p соответствует всему содержимому строки. Я заменил \w* на \w++, чтобы исключить совпадения нулевой длины и устранить возвратные дорожки.

Для дальнейшего ознакомления взгляните на Учебное пособие по Java> Основные классы - Урок: регулярные выражения .

1 голос
/ 04 марта 2012

Поскольку у вас есть параметры для Pattern.matches() в обратном направлении.

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

Кроме того, вам не нужен набор (скобки).Кроме того, вам нужно будет использовать класс Matcher и получить справочную информацию с помощью метода group().

1 голос
/ 04 марта 2012

Попробуйте использовать класс Matcher, см. Эту страницу для получения дополнительной информации о регулярных выражениях в Java http://java.sun.com/developer/technicalArticles/releases/1.4regex/

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