我试图用'+'替换字符串中的所有空格。但它应该忽略忽略[]内的空格。有人知道如何使用正则表达式。
示例:
latitude[0 TO *] longitude[10 TO *]
应替换为
latitude[0 TO *]+longitude[10 TO *]
答案 0 :(得分:2)
替换(启用“全局”标志)
\s(?=[^\]]*(?:\[|$))
带
+
解释
\s # white-space (use an actual space if you want)
(?= # but only when followed by (i.e. look-ahead)...
[^\]]* # ...anything but a "]"
(?: # non-apturing group ("either of")
\[ # "["
| # or
$ # the end of the string
) # end non-capturing group
) # end look-ahead
这假设在字符串中没有错误的打开/关闭方括号并且方括号从不嵌套时匹配任何不在方括号内的空格。
答案 1 :(得分:1)
我建议使用机器状态而不是正则表达式。这样,当您在[]内部时,可以停止替换空格。如果你使用正则表达式,你可能需要使用前瞻,使其更复杂。这里有一个类似的例子:
Replace whitespace outside quotes using regular expression