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", ".")