0

我尝试找到一个正则表达式以提取文件名。我的字符串是path/string.mystring

举个例子

totot/tototo/tatata.tititi/./com.myString   

我试着得到myString.

我试过了 String[] test = foo.split("[*.//./.]");

4

7 回答 7

1

此处已回答了类似的问题。我会说使用正则表达式来获取文件名是错误的方式(例如,如果您的代码曾经尝试针对 Windows 文件路径运行,那么您的正则表达式中的斜杠将是错误的方式) - 为什么不只是利用:

new File(fileName).getName();

获取文件名,然后使用更简单的拆分提取您想要的文件名部分:

String[] fileNameParts = foo.split("\\.");
String partThatYouWant = fileNameParts [fileNameParts.length - 1];
于 2013-04-15T14:40:53.683 回答
1

你可以用这个得到最后一句话:\w+$

于 2013-04-15T14:41:39.510 回答
0

我的字符串是 path/string.mystring

如果您的字符串模式按照上述规则固定,那么如何:

string.replaceAll(".*\\.","")
于 2013-04-15T14:43:36.513 回答
0

如果你想分割句点或斜线,正则表达式应该是

foo.split("[/\\.]")

或者,您可以这样做:

String name = foo.substring(foo.lastIndexOf('.') + 1);
于 2013-04-15T14:41:37.770 回答
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));
        }
    }
}
于 2013-04-15T15:05:21.363 回答
0

使用&的非正则表达式解决方案将是。String#subStringString#lastIndexOf

String path="totot/tototo/tatata.tititi/./com.myString";
String name = path.substring(path.lastIndexOf(".")+1);
于 2013-04-15T14:44:32.070 回答
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));
}

它适合你的情况吗?使用索引有很多问题。但是,如果您始终确定会有一个.,您可以毫无问题地使用它。

于 2013-04-15T14:46:02.373 回答