我试图找到一个正则表达式来提取文件的名称。我的字符串是path/string.mystring
例如
totot/tototo/tatata.tititi/./com.myString
我试着获得myString
。
我尝试了String[] test = foo.split("[*.//./.]");
答案 0 :(得分:1)
类似的问题已经回答here。我会说使用正则表达式来获取文件名是错误的方法(例如,如果你的代码试图在Windows文件路径上运行,你的正则表达式中的斜杠将是错误的方式) - 为什么不呢使用方法:
new File(fileName).getName();
获取文件的名称,然后使用更简单的拆分提取所需的文件名部分:
String[] fileNameParts = foo.split("\\.");
String partThatYouWant = fileNameParts [fileNameParts.length - 1];
答案 1 :(得分:1)
您可以使用以下内容获得最后一句话:\w+$
答案 2 :(得分:0)
如果要分割句点或斜杠,正则表达式应为
foo.split("[/\\.]")
或者,你可以这样做:
String name = foo.substring(foo.lastIndexOf('.') + 1);
答案 3 :(得分:0)
我的字符串是path / string.mystring
如果按照上述规则修复了字符串模式,那么:
string.replaceAll(".*\\.","")
答案 4 :(得分:0)
非正则表达式解决方案使用String#subString
& String#lastIndexOf
会。
String path="totot/tototo/tatata.tititi/./com.myString";
String name = path.substring(path.lastIndexOf(".")+1);
答案 5 :(得分:0)
也许你应该只使用String API。像这样:
public static void main(String[] args){
String path = "totot/tototo/tatata.tititi/./com.myString";
System.out.println(path.substring(path.lastIndexOf(".") + 1));
}
它适合你的情况吗?使用索引时存在许多问题。但是如果你总是确定会有.
你可以毫无问题地使用它。
答案 6 :(得分:0)
试试这段代码:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Regexp
{
public static void main(String args[])
{
String x = "totot/tototo/tatata.tititi/./com.myString";
Pattern pattern = Pattern.compile( "[a-z0-9A-Z]+$");
Matcher matcher = pattern.matcher(x);
while (matcher.find())
{
System.out.format("Text found in x: => \"%s\"\n",
matcher.group(0));
}
}
}