Java 使用正则表达式从字符串中提取数据
我将从字符串中提取业务价值。但我的问题是,字符串在循环中每次都会重复。内容语法总是一样的,但是内容在变化。 因此,我需要一个reg expr来帮助我提取数据 到目前为止,我所尝试的:Java 使用正则表达式从字符串中提取数据,java,regex,Java,Regex,我将从字符串中提取业务价值。但我的问题是,字符串在循环中每次都会重复。内容语法总是一样的,但是内容在变化。 因此,我需要一个reg expr来帮助我提取数据 到目前为止,我所尝试的: (“^\\d{1,2}(.{1})\\s([A-Za-z]{2})\\s(([A-z]\\d{2,3}))\\s.” 但上述模式仅输出前三个参数: 01。Di F929 示例字符串显示如下所示: 1Di F929*Fr F929 Fr FREI Mo S688 Mi S49*Sa S57 Mo F929 是否F22
(“^\\d{1,2}(.{1})\\s([A-Za-z]{2})\\s(([A-z]\\d{2,3}))\\s.”
但上述模式仅输出前三个参数:
01。Di F929
示例字符串显示如下所示:
1Di F929*Fr F929 Fr FREI Mo S688 Mi S49*Sa S57 Mo F929
是否F224 So S49 Di X337 Fr F56 So频率\n
让我解释一下字符串是如何构建的
(\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));
}
}
嗯……你能告诉我们你想在这个示例字符串中匹配什么吗?试着删除
^
锚点或者删除锚点^
对我没有帮助。字符串中的“FREI”一词不出现或不匹配。您想要实现的目标真的不清楚。请展示一些测试用例,包括输入字符串和预期输出。好的,我已经解决了。
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));
}
}