2017-05-07 8 views
0

私はJavaの音声制御電卓を構築しており、入力の解析に問題があります。たとえば、私は5例外を含むスペースで文字列を分割する方法

によって入力

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/

関連する問題