私はJavaの音声制御電卓を構築しており、入力の解析に問題があります。たとえば、私は5例外を含むスペースで文字列を分割する方法
によって入力
10除算を持っていると私は配列にスペースでこの文字列を分割したいが、私が望む「分割により」出力が見えるはずですので、分割されるべきではありません によるような
- デバイド
助けてください。私は正規表現を使用しようとしましたが運がありませんでした。
ありがとうございます。
私はJavaの音声制御電卓を構築しており、入力の解析に問題があります。たとえば、私は5例外を含むスペースで文字列を分割する方法
によって入力
10除算を持っていると私は配列にスペースでこの文字列を分割したいが、私が望む「分割により」出力が見えるはずですので、分割されるべきではありません によるような
- デバイド
助けてください。私は正規表現を使用しようとしましたが運がありませんでした。
ありがとうございます。
あなたは交代を使用して、すべてのそのようなフレーズや、単一の単語を非分割フレーズ(例えば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));
}
これに取り組むもう一つの方法は、小さなデータセットを持っていて、空白で分割してはならない次の単語のサイズが常に2文字以下であることがわかっている場合、次のような正規表現を試すことができます:
\s(?=\w{2}\S)