在正好一个空格处使用正则表达式拆分字符串

时间:2015-07-22 10:55:03

标签: java regex

我正在尝试使用空格分割字符串,但前提是只有一个空格。

例如我有以下内容。

String s = "THIS IS A  TEST";

我想把结果“THIS”,“IS”,“A TEST”。如何组建正则表达式来完成这项工作?

3 个答案:

答案 0 :(得分:4)

使用lookarounds:

public String getData(String url){
StringBuilder stringBuilder = new StringBuilder();
        JSONObject jsonObject = new JSONObject();
        HttpURLConnection conn = null;
        try {
            URL url1 = new URL(url.toString());
            conn = (HttpURLConnection) url1
                    .openConnection();
            InputStreamReader in = new InputStreamReader(
                    conn.getInputStream());

            int b;
            while ((b = in.read()) != -1) {
                stringBuilder.append((char) b);
            }
            return stringBuilder.toString();
}

此正则表达式匹配未遵循且未以空格开头的空格。

在Java中,它会看起来:

(?<!\s)(\s)(?!\s)

说明:

  • 正则表达式"THIS IS A TEST".split("(?<!\\s)(\\s)(?!\\s)"); 匹配&#34; b&#34; &#34; a&#34;
  • 之前
  • 正则表达式(?<!a)b匹配&#34; b&#34; &#34; a&#34;

进一步阅读:

答案 1 :(得分:1)

由于split()的参数是正则表达式,因此您可以查找一个或多个空格(“+”)而不只是一个空格(“”)。

  

String [] array = s.split(“+”);

您还可以添加和参数来限制要将字符串拆分成的单据数。

  

String [] array = s.split(“+”,N);

其中N是要将字符串分成的分割数。

答案 2 :(得分:1)

您可以尝试使用单词边界的此正则表达式。

string.split("\\b\\s\\b");