簡體   English   中英

使用正則表達式從字符串中提取數據

[英]Extract data from String using regular Expression

我將從字符串中提取業務價值。 但是我的問題是,字符串在循環中每次都重復。 並且內容語法總是相同的,但是內容正在變化。 因此,我需要一個reg-expr來幫助我提取數據。

到目前為止,我已經嘗試過:( ("^\\\\d{1,2}(.{1})\\\\s([A-Za-z]{2})\\\\s(([AZ]\\\\d{2,3}))\\\\s.")

但是上述提供的模式僅輸出前三個參數: 01. Di F929

示例字符串顯示如下:

\n 01. Di F929 * Fr F929 Fr FREI Mo S688 Mi S49 * Sa S57 Mo F929 \n F224 So S49 Di X337 Fr F56 So FREI \\ n\n

讓我解釋一下字符串是如何構建的。

  1. (01.)是從01到31的數字。
  2. 以下是shortWeekDays(德語)(Mo,Di,Mi,..)
  3. 以字符開頭的單詞以數字結尾(F929,S49等)
  4. (可選)特殊字符,例如“ *,X,...”

重要:

Di + F929 + *
代表單個數據塊。 每個字符串包含大約12個數據塊。

我需要的是一個匹配上述問題的正則表達式。 謝謝!

這將幫助您:

(\d{1,2}\.)?\s*([A-Za-z]{2}\s+[A-Z0-9]+\s*[*X]?)\s*

在線演示

Java代碼:

public class Test {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("(\\d{1,2}\\.)?\\s*([A-Za-z]{2}\\s+[A-Z0-9]+\\s*[*X]?)\\s*");
        String string = "01. Di F929 * Fr F929 Fr FREI Mo S688 Mi S49 * Sa S57 Mo F929 " +
            "Do F224 So S49 Di X337 Fr F56 So FREI \\n";

        Matcher m = pattern.matcher(string);

        while (m.find())
            System.out.println(m.group(2));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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