2017-05-07 66 views
0

我正在構建Java語音控制計算器,並且遇到解析輸入問題。比如我輸入如何以空格分割字符串,但有例外

10五

鴻溝,我想這個字符串由空格分割成一個數組,但我「的鴻溝」不被分割,因此輸出應該要像

  • 除以

請幫忙。我試圖使用正則表達式,但沒有運氣。

非常感謝。

回答

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

0

解決此問題的另一種方法是,如果您有一個小數據集,並且您知道以下單詞的大小(不應該按空格分隔)始終爲2個字母或更少,則可以嘗試類似於此的正則表達式:

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

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