我正在构建Java语音控制计算器,我在解析输入时遇到问题。例如,我有输入
十分五分
我想用空格将这个字符串拆分成一个数组,但是我希望"除以"不要拆分,所以输出应该看起来像
请帮忙。我试图使用正则表达式,但没有运气。
非常感谢。
答案 0 :(得分:4)
您可以定义一个非分割短语列表(例如divide by
,equals 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));
}
答案 1 :(得分:0)
解决这个问题的另一种方法是,如果你有一个小数据集,并且你知道下一个单词的大小 - 不应该按空格分割 - 总是2个字母或更少,你可以试试类似这样的正则表达式:
\s(?=\w{2}\S)