我要从字符串中提取业务价值。但是我的问题是,字符串在循环中每次都重复。并且内容语法总是相同的,但是内容正在变化。 因此,我需要一个reg-expr来帮助我提取数据。
到目前为止我尝试过的是:
("^\\d{1,2}(.{1})\\s([A-Za-z]{2})\\s(([A-Z]\\d{2,3}))\\s.")
但是上面提供的模式仅向我输出前三个参数: 01。 Di 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
让我解释一下如何构建字符串。
重要:
Di + F929 + *代表单个数据块。每个字符串包含大约12个数据块。
我需要的是一个匹配上述问题的正则表达式。 谢谢!
答案 0 :(得分:1)
这将帮助您:
(\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));
}
}