有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java正则表达式中,如何获取文件名的特定部分

我有一个字符串,它基本上是一个文件名。我需要找回一个 文件名的一部分。它是第二个-(破折号)之前的值。文件名的格式如下所示:

fileName-014qsqs-xxxxyyyzzz。txt

因此,我需要得到:

fileName-014QS

我如何使用正则表达式来实现它

谢谢


共 (3) 个答案

  1. # 1 楼答案

    可以使用以下正则表达式:

    "([^-]*-[^-]*)-.*"
    

    说明:除“-”之外的任何字符都表示为“[^-]”,因此

    ([^-]*-[^-]*)
    

    捕获由单个“-”分隔的非“-”字符序列,然后是第二个“-”字符,后面是任何其他文本

  2. # 2 楼答案

    嗨,我可能会做一段时间,当找到2“-”停止。Sry对此不予置评

  3. # 3 楼答案

    当试图弄明白这一点时,使用正则表达式测试器(例如http://www.regexplanet.com/advanced/java/index.html)可能会有所帮助

    regex (.*?-.*?)-.*与您要查找的内容匹配

    .*:任意字符任意次数

    ?:使它不贪婪,所以它只做尽可能少的匹配

    -:文字破折号

    ():括号使其成为一个组,以便可以提取

    整个程序如下所示:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Main
    {
        public static void main(String atrgs[])
        {
            String line = "fileName-014qsqs-xxxxyyyzzz.txt";
            Pattern pattern = Pattern.compile("(.*?-.*?)-.*");
            Matcher matcher = pattern.matcher(line);
            while (matcher.find()) {
                System.out.println(matcher.group(1));
            }
        }
    }
    

    并且有输出fileName-014qsqs