gpt4 book ai didi

java - 使用正则表达式从字符串中提取数据

转载 作者:行者123 更新时间:2023-12-02 10:26:31 25 4
gpt4 key购买 nike

我将从字符串中提取商业值(value)。但我的问题是,该字符串每次都在循环中重复。而且内容语法始终相同,但内容在变化。因此我需要一个 reg-expr 来帮助我提取数据。

到目前为止我已经尝试过:("^\\d{1,2}(.{1})\\s([A-Za-z]{2})\\s(([A-Z]\\d{2,3 }))\\s。")

但是上面提供的模式只输出前三个参数:01。迪F929

示例字符串如下所示:

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

让我解释一下字符串是如何构建的。

  1. (01.) 是 01 到 31 之间的数字。
  2. 以下是shortWeekDays(德语)(Mo、Di、Mi、..)
  3. 单词以字符开头,字符以数字结尾(F929、S49、...)
  4. (可选)特殊字符,如“*、X、...”

重要:

Di + F929 + *
代表单个数据 block 。每个字符串包含大约 12 个数据 block 。

我的需要是,一个匹配上述问题的正则表达式。谢谢您的关注!

最佳答案

这会对您有所帮助:

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

Online Demo

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));
}
}

关于java - 使用正则表达式从字符串中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53922914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com