Нахождение подстроки с помощью регулярного опыта - PullRequest
2 голосов
/ 07 июня 2011

У меня есть строка

abc.xyz.qweweer.cccc

На самом деле это будет имя пакета Java.

Я пытаюсь выяснить последнюю строку, используя reg exp, в приведенном выше примере cccc - последняя строка.

Обычно я пытаюсь узнать имя класса из строки пакета.

Как узнать через Java

Ответы [ 5 ]

2 голосов
/ 07 июня 2011

Учитывая строку pkg = "abc.xyz.qweweer.cccc", вы можете решить ее следующим образом:

  • Использование indexOf:

    int index = pkg.lastIndexOf('.');
    String lastPart = index == -1 ? pkg : pkg.substring(index + 1);
    
  • Использование обычноговыражения с Matcher:

    Matcher m = Pattern.compile("[^.]*$").matcher(pkg);
    String lastPart = m.find() ? m.group() : null;
    
  • Использование split (вариант ответа RMT):

    String[] names = pkg.split("\\.");
    String lastPart = names[names.length - 1];
    
1 голос
/ 07 июня 2011

Почему бы просто не разделить на "."

String[] names = packageName.split(".");
String className = names[names.length-1];
0 голосов
/ 07 июня 2011

Вы действительно хотите использовать регулярные выражения? Вы можете сделать str.substring (str.lastIndexOf (".") + 1), чтобы получить имя класса.

0 голосов
/ 07 июня 2011

Для этого вы можете использовать Apache StringUtils substringAfterLast .

StringUtils.substringAfterLast("abc.xyz.qweweer.cccc", ".")

Для этого не требуется регулярное выражение.

0 голосов
/ 07 июня 2011

Alt1 - требуется извлечь

String packageName = ...
Matcher m = Pattern.compile("[a-zA-Z]+$").matcher(packageName);
if (m.find()) {
    m.group(); // your match
}

Alt2 - удалить нежелательное

Вы также можете попробовать несколько менее подробный подход:

String result = packageName.replaceAll(".*\\.", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...