簡體   English   中英

在Java Regex中,如何獲取fileName的特定部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM