正则表达式分裂指令

时间:2012-05-23 17:08:46

标签: java regex

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

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+,]

3 个答案:

答案 0 :(得分:3)

以下应该这样做:

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

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

尝试以下方面:

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

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

([0-9] +)应该允许任意大小的数字

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

\ 1 应该反向引用第一组()

首先找到的值 \ 2 “”“”“”“”第二套()

\ 3 “”“”“”“”第三组()

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