Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按空格分割字符串(有异常)_Java_Regex_Parsing_Text Parsing_String Parsing - Fatal编程技术网

Java 如何按空格分割字符串(有异常)

Java 如何按空格分割字符串(有异常),java,regex,parsing,text-parsing,string-parsing,Java,Regex,Parsing,Text Parsing,String Parsing,我正在构建Java语音控制计算器,在解析输入时遇到问题。例如,我有输入 十除以五 我想把这个字符串按空格分割成一个数组,但是我不想分割“divide by”,所以输出应该是 十 除以 五 请帮忙。我尝试使用正则表达式,但没有成功 非常感谢。您可以定义一个非拆分短语列表(例如,除以,等于),而不是按空格拆分,使用交替匹配所有此类短语或单个单词: \b(?:divide by|equals to)\b|\w+ 演示: Java代码: String input = "ten divide by

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

十除以五

我想把这个字符串按空格分割成一个数组,但是我不想分割“divide by”,所以输出应该是

  • 除以
请帮忙。我尝试使用正则表达式,但没有成功


非常感谢。

您可以定义一个非拆分短语列表(例如,
除以
等于
),而不是按空格拆分,使用交替匹配所有此类短语或单个单词:

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

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));
}

演示:

您可以定义一个非拆分短语列表(例如,
除以
等于
),而不是按空格拆分,使用交替匹配所有此类短语或单个单词:

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

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)

演示:

解决此问题的另一种方法,如果您有一个小数据集,并且您知道以下单词的大小(不应按空格分割)始终为2个字母或更少,您可以尝试类似于此的正则表达式:

\s(?=\w{2}\S)
演示: