在java Regex中,我如何获取fileName的某个部分

时间:2017-05-09 11:05:54

标签: java regex

我有一个String,它基本上是一个文件名。我需要检索某个 部分文件名。它是秒之前的值 - (破折号)。文件名将采用格式示例:

文件名-014qsqs-xxxxyyyzzz.txt

我需要得到结果:

文件名-014qsqs

我如何使用正则表达式?

由于

3 个答案:

答案 0 :(得分:2)

尝试解决此问题时,使用正则表达式测试器(例如http://www.regexplanet.com/advanced/java/index.html

会很有帮助

正则表达式(.*?-.*?)-.*与您要查找的内容相匹配。

.*:任意次数的任何字符

?:让它变得非贪婪,所以它只能尽可能少地匹配

-:文字破折号

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

整个程序看起来像这样:

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

答案 1 :(得分:0)

您可以使用此正则表达式:

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

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

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

捕获一系列由单个“ - ”分隔的非“ - ”字符,接着是第二个“ - ”后跟任何其他文本。

答案 2 :(得分:0)

嗨我可能会做一段时间,当找到2“ - ”stop.Sry无法发表评论