字符串替换正则表达式仅在 [] 之外使用标记
我正在尝试用“+”替换字符串中的所有空格。但它应该忽略 [] 内的空格。有谁知道如何使用正则表达式来做到这一点。
示例:
latitude[0 TO *] longitude[10 TO *]
应替换为
latitude[0 TO *]+longitude[10 TO *]
I am trying to replace all the spaces in string with '+'. But it should ignore ignore the spaces inside the []. Do anyone know how to do this using regular expression.
Example:
latitude[0 TO *] longitude[10 TO *]
should be replaced as
latitude[0 TO *]+longitude[10 TO *]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将 ("global" 标志已启用) 替换
为
Explanation
这会匹配不在方括号内的任何空格,前提是字符串中没有不正确打开/关闭的方括号,并且方括号从不嵌套。
Replace ("global" flag enabled)
with
Explanation
This matches any space that is not inside a square bracket, under the assumption that there are no incorrectly opened/closed square brackets in the string and that square brackets are never nested.
我建议使用机器状态而不是正则表达式。这样,当您位于 []“内部”时,您可以停止替换空格。如果您使用正则表达式,您可能需要使用前瞻,使其变得更加复杂。这里有一个类似的例子:
使用正则表达式替换引号外的空格
I suggest using a machine state instead of a regex. This way, you can stop replacing whitespaces when you're "inside" the []. If you go with a regex, you will likely need to use a lookahead, making it more complicate. There is a similar example here:
Replace whitespace outside quotes using regular expression