我有一个String,它基本上是一个文件名。我需要检索某个 部分文件名。它是秒之前的值 - (破折号)。文件名将采用格式示例:
文件名-014qsqs-xxxxyyyzzz.txt
我需要得到结果:
文件名-014qsqs
我如何使用正则表达式?
由于
答案 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无法发表评论