正则表达式删除引号之间的空格,但不删除引号内的单词之间的空格?

时间:2017-11-24 16:41:42

标签: java regex replaceall

我用Java编程。

我正在努力改变这个:

Text0 Text1 " Text2 Text3 Text4     "   Text5 Text6

进入这个:

Text0 Text1 "Text2 Text3 Text4" Text5 Text6

我尝试过前瞻和后视:

  

(小于?= \")\ S +(\ W * \ S * \ W *)\ S +(= \"?)

设法匹配引号内的所有文本,但切换到:

  

(小于?= \")\ S +(\ W * \ S * \ W *)\ S +(= \"?)

我收到错误。不知道为什么。

我对正则表达式的简短了解限制了我。帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

不使用(仅)正则表达式更容易。

将字符串拆分为引号(-1以保留任何尾随的空白部分):

String[] parts = str.split("\"", -1);

修剪奇数元素:

for (int i = 1; i < parts.length; i += 2) {
  parts[i] = parts[i].trim();
}

再次加入零件:

String newStr = String.join("\"", parts);