使用正则表达式Java的split()

时间:2018-09-11 04:04:00

标签: java regex

我正在尝试分割一个字符串,例如: 项目1 = $ 2项目2 = $ 3项目3 = $ 4 所以我当然不能在空间上分裂,因为我有兴趣获取所有物品的价格。所以我创建了一个正则表达式

    String[] prices = line.split("[a-zA-Z]+\\s[0-9]+\\=\\$");

但是在输出中我得到了4个元素。一个是空字符串并保留我想要的值。我不明白为什么4?我应该给三个字串我在做什么错了?

谢谢

1 个答案:

答案 0 :(得分:3)

这里有很多假设,但目标是找到给定行中的所有价格,因此我将执行以下操作,而不是尝试将行本身拆分为

>
String line = "item 1 = $2 item 2 = $3 item 3 = $4";
Pattern pat = Pattern.compile("\\$([\\d]+)");
Matcher m = pat.matcher(line);
while (m.find()) {
    System.out.println(m.group(1));
}

输出:

  

2
  3
  4

因此,我们只有价格。现在,如果价格可以包含小数等,则需要更新正则表达式。

这样更新的正则表达式可能是:

Pattern pat = Pattern.compile("\\$([\\d]+[.]?[\\d]*)");

,输入修改后:

 String line = "item 1 = $2 item 2 = $3.01 item 3 = $4.53";

一个得到:

2
3.01
4.53