gpt4 book ai didi

java - 正则表达式:在Java中分割复杂列表(两列)

转载 作者:行者123 更新时间:2023-12-01 15:02:07 26 4
gpt4 key购买 nike

我试图通过考虑大量分隔符(见下文)来弄清楚如何将文件(两列)拆分为 readLine();

这是我的分隔符的所有可能性(参见评论)

+--------+---------+
+ ##some text + //some text which starts with (##) I want to exclude this row
+ 341, 222 + //comma delimited
+ 211 321 + //space delimited
+ 541 1231 + //tab delimited
+ ##some text + //some text which starts with (##) I want to exclude this row
+ 11.3 321.11 + //double values delimited by tab
+ 331.3 33.11 + //double values delimited by space
+ 231.3, 33.1 + //double values delimited by comma
+ ##some text + //some text which starts with (##) I want to exclude this row
+--------+---------+

我想获取这张表:

+--------+---------+
+ 341 222 +
+ 211 321 +
+ 541 1231 +
+ 11.3 321.11 +
+ 331.3 33.11 +
+ 231.3 33.1 +
+--------+---------+

我很高兴找到此问题的解决方案

更新:

现在我有 ([,\s\t;])+ (用于逗号、制表符、空格、分号...),但我不知道如何执行 # #一些文字。我尝试了\##\w+ 但没有成功。有什么建议吗?

最佳答案

你可以试试这个...
我已经尝试过了,效果很好。

(\\d+\\.?\\d*),?\\s*?(\\d+\\.?\\d*)

并替换为$1$2

编辑:

尝试下面的代码...

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class regcheck
{
private static Pattern twopart = Pattern.compile("(\\d+\\.?\\d*),?\\s*?(\\d+\\.?\\d*)");

public static void checkString(String s)
{
Matcher m = twopart.matcher(s);
if (m.matches()) {
System.out.println(m.group(1) +" " + m.group(2));
} else {
System.out.println(s + " does not match.");
}
}

public static void main(String[] args) {
System.out.println("Parts of strings are ");
checkString("##some text");
checkString("123, 4567");
checkString("123, 342");
checkString("45.45 4.3");
checkString("3.78, 23.78");

}
}

输出:

Parts of strings are
##some text does not match.
123 4567
123 342
45.45 4.3
3.78 23.78

m.group(1) 将为您提供第一部分。
m.group(2) 将为您提供第二部分。

在您的代码中使用 checkstring() 方法进行单行......

关于java - 正则表达式:在Java中分割复杂列表(两列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13492549/

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