使用常规exp查找子字符串

时间:2011-06-07 12:18:01

标签: java regex

我有一个字符串

abc.xyz.qweweer.cccc

这实际上是一个Java包名。

我试图找出使用reg exp的最后一个字符串,在上面的例子中cccc是最后一个字符串。

基本上我试图从包字符串中找出类名。

如何通过Java找到

5 个答案:

答案 0 :(得分:2)

给定字符串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 :(得分:1)

为什么不拆分“。”

String[] names = packageName.split(".");
String className = names[names.length-1];

答案 2 :(得分:0)

Alt1 - 提取所需

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

Alt2 - 删除不受欢迎的

你也可以尝试一种不那么冗长的方法:

String result = packageName.replaceAll(".*\\.", "");

答案 3 :(得分:0)

您可以使用Apache StringUtils substringAfterLast

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

这不需要正则表达式。

答案 4 :(得分:0)

你真的想使用正则表达式吗?您可以执行str.substring (str.lastIndexOf (".") + 1)来获取类名。