如何使用异常按空格分割字符串

时间:2017-05-07 11:42:42

标签: java regex parsing text-parsing string-parsing

我正在构建Java语音控制计算器,我在解析输入时遇到问题。例如,我有输入

  

十分五分

我想用空格将这个字符串拆分成一个数组,但是我希望"除以"不要拆分,所以输出应该看起来像

  • 除以
  • 5

请帮忙。我试图使用正则表达式,但没有运气。

非常感谢。

2 个答案:

答案 0 :(得分:4)

您可以定义一个非分割短语列表(例如divide byequals to),而不是按空格分割所有这些短语或单个单词使用替换:

\b(?:divide by|equals to)\b|\w+

演示:https://regex101.com/r/QhNvGo/1

Java代码:

String input = "ten divide by five equals to two";
Pattern pattern = Pattern.compile("\\b(?:divide by|equals to)\\b|\\w+");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group(0));
}

演示:https://ideone.com/X99lMK

答案 1 :(得分:0)

解决这个问题的另一种方法是,如果你有一个小数据集,并且你知道下一个单词的大小 - 不应该按空格分割 - 总是2个字母或更少,你可以试试类似这样的正则表达式:

\s(?=\w{2}\S)

演示:https://regex101.com/r/bugQ4O/1/