1

我需要使用split()Java 中的方法拆分一行汇编代码。这是一个示例代码:

String line = "Add a, b, c";
String[] parts = line.split("[\\s+,]");
System.out.println(Arrays.toString(parts));

输出:

[Add, a, , b, c]

我需要输出如下:

[Add, a, b, c]

对于以下任何输入:

String line = "Add a,b,c";
String line = "Add   a  ,b,c";
String line = "Add a,  b,c";
String line = "Add a,b , c";
String line = "Add a , b , c";

或任何类似情况。

什么是正确的正则表达式来代替[\\s+,]

4

3 回答 3

3

以下应该做到这一点:

String[] parts = line.split("[\\s,]+");

您当前的正则表达式恰好匹配一个空格,或恰好一个+,或恰好一个逗号。

上述正则表达式匹配一个或多个空格和/或逗号。

不同之处在于 : 的位置,+当它出现在字符类中时,它是按字面意思解释的。

于 2012-05-23T17:10:26.187 回答
2

怎么样[\\s,]+?它将匹配一次或多次出现的空格或逗号

于 2012-05-23T17:11:29.350 回答
0

尝试以下方式:

添加 ?([0-9]+) ?, ?([0-9]+) ?, ?([0-9]+) ?"

“[添加\1,\2,\3]”

([0-9]+) 应该让它取任何大小的数字

_? 应该为可选空间腾出空间

\1 应该反向引用第一组 () 找到的值

\2 " " " " " " " 第二组 ()

\3 " " " " " " " 第三组 ()

逻辑是合理的,但请确保我的语法正确。

于 2012-05-23T17:28:32.080 回答