正则表达式按空格分割但忽略单词之间的空格

时间:2018-02-23 03:42:57

标签: java regex

如何在空格上的字符串上进行正则表达式拆分但忽略单词之间的空格?

字符串如下:

1 IT1103 Kabellose Maus Freemove 5 23.07.2018 30 150,00

我想将字符串拆分并保存到DataTable

1
IT1103
Kabellose Maus Freemove
5 
23.07.2018
30 
150,00

有人可以帮忙吗?

由于 邦尼

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

String input ="1 IT1103 Kabellose Maus Freemove 5 23.07.2018 30 150,00";
final String PATTERN = "(?<=\\d)\\s|\\s(?=\\d)";
String[] array = input.split(PATTERN);
for(String str : array)
{
  System.out.println(str);
}

<强>输出:

1
IT1103
Kabellose Maus Freemove
5
23.07.2018
30
150,00

正则表达式: https://regex101.com/r/MN6juN/2

<强>解释

(?<=\\d)\\s|\\s(?=\\d)是一个正则表达式,仅考虑后跟/前面有数字的空格,因此Kabellose Maus Freemove将被视为整个字符串。

答案 1 :(得分:1)

比Allans解决方案简单,但更详细:

String tmp = input.replaceAll ("([0-9]) ([0-9a-zA-Z])", "\1\n\2")
String out = tmp.replaceAll ("([a-zA-Z]) ([0-9])", "\1\n\2")
  • 首先中断,当两位数字或数字与字符串
  • 之间为空时
  • 然后打破,当char和数字之间的空白