[英]In java Regex, How can I get a certain part of a fileName
我有一個String wich,基本上是一個文件名。 我需要檢索文件名的特定部分。 它是秒之前的值-(破折號)。 文件名將采用示例格式:
fileName-014qsqs-xxxxyyyzzz.txt
我需要得到一個結果:
fileName-014qsqs
如何使用正則表達式?
謝謝
嘗試弄清楚這一點時,使用正則表達式測試器可能會有所幫助(例如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
。
您可以使用以下正則表達式:
"([^-]*-[^-]*)-.*"
說明:除“-”以外的任何字符均表示為“ [^-]”,因此
([^-]*-[^-]*)
捕獲由單個“-”,下一個第二個“-”和任意其他文本分隔的一系列非“-”字符。
嗨,我可能會做一陣子,當找到2個“-”檔時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.