什么是正确的正则表达式?

时间:2013-04-15 14:39:21

标签: java regex

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

例如

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

我试着获得myString

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

7 个答案:

答案 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));
        }
    }
}