Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式查找子字符串_Java_Regex - Fatal编程技术网

Java 使用正则表达式查找子字符串

Java 使用正则表达式查找子字符串,java,regex,Java,Regex,我有一根绳子 abc.xyz.qweweer.cccc 这实际上是一个Java包名 我试图使用reg exp找出最后一个字符串,在上面的示例中,cccc是最后一个字符串 基本上,我试图从包字符串中找出类名 如何通过Java找到答案 备降2-移除不需要的车辆 您也可以尝试不太详细的方法: String result = packageName.replaceAll(".*\\.", ""); 给定一个字符串pkg=“abc.xyz.qweweer.cccc”您可以这样解决它: 使用索引of:

我有一根绳子

abc.xyz.qweweer.cccc
这实际上是一个Java包名

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

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

如何通过Java找到答案 备降2-移除不需要的车辆 您也可以尝试不太详细的方法:

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

给定一个字符串
pkg=“abc.xyz.qweweer.cccc”
您可以这样解决它:

  • 使用
    索引of

    int index = pkg.lastIndexOf('.');
    String lastPart = index == -1 ? pkg : pkg.substring(index + 1);
    
  • 将正则表达式与
    匹配器一起使用

    Matcher m = Pattern.compile("[^.]*$").matcher(pkg);
    String lastPart = m.find() ? m.group() : null;
    
  • 使用
    拆分
    (RMT答案的变化):

为什么不在“.”上拆分呢


您可以使用ApacheStringUtils进行此操作

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

此操作不需要正则表达式。

是否确实要使用正则表达式?您可以执行
str.substring(str.lastIndexOf(“.”+1)
来获取类名。

我已经有了一个逻辑,1)找到“.”的最后一个索引。2)执行子字符串索引,包名的长度。现在我正在尝试是否可以通过regexp实现。我刚刚编辑了我的答案,因为我犯了一个错误,split()方法实际上使用了regex。public String[]split(String regex)要求在包名中出现一个
”(这对于包名一般来说是不正确的)。除非他已经在使用commons,否则我不鼓励他在应用程序中包含一个完整的库,将2-liner转换为1-liner。
StringUtils.substringAfterLast("abc.xyz.qweweer.cccc", ".")
String[] names = packageName.split(".");
String className = names[names.length-1];
StringUtils.substringAfterLast("abc.xyz.qweweer.cccc", ".")