3

我正在使用 java 来拆分形式的字符串:

String stringToSplit = "AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK";

我在用着

String[] tokens = stringToParse.split("\\s");

沿空白分割字符串,给出:

tokens = {"AAA","BBB","CCC", "DDD","EEE","FFF","GGG","HHH","III", "JJJ", "KKK"} 

我现在需要做的是将它们中的大多数沿着空格分开,但在特定情况下还要保持一些字符串在一起。例如,当我拆分时,我希望“CCC DDD”和“III JJJ KKK”保持完整的字符串。所以我希望我的令牌数组是:

tokens = {"AAA","BBB","CCC DDD","EEE","FFF","GGG","HHH","III JJJ KKK"}

我会使用什么正则表达式?这可能吗?

4

2 回答 2

6

您可以用 ccc_ddd 替换 ccc ddd ,然后稍后将下划线转换回空格。

如果你要做很多这样的事情,你可能想投资某种语法解析器

于 2013-01-15T20:13:53.520 回答
3

除了使用split(),您可以使用以下方法查找所有连续的非空白字符,但使用交替来匹配包含空白的特定目标字符串:

Pattern p = Pattern.compile("CCC DDD|III JJJ KKK|\\S+");
Matcher m = p.matcher("AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK");
while(m.find()) {
    System.out.println(m.group());
}

示例:http: //ideone.com/AxI1CV

于 2013-01-15T20:19:44.983 回答