字符串替换正则表达式仅在 [] 之外使用标记

发布于 2024-12-02 06:46:55 字数 212 浏览 1 评论 0原文

我正在尝试用“+”替换字符串中的所有空格。但它应该忽略 [] 内的空格。有谁知道如何使用正则表达式来做到这一点。

示例:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

纵性 2024-12-09 06:46:56

将 ("global" 标志已启用) 替换

\s(?=[^\]]*(?:\[|$))

+

Explanation

\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

这会匹配不在方括号内的任何空格,前提是字符串中没有不正确打开/关闭的方括号,并且方括号从不嵌套。

Replace ("global" flag enabled)

\s(?=[^\]]*(?:\[|$))

with

+

Explanation

\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

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.

澜川若宁 2024-12-09 06:46:56

我建议使用机器状态而不是正则表达式。这样,当您位于 []“内部”时,您可以停止替换空格。如果您使用正则表达式,您可能需要使用前瞻,使其变得更加复杂。这里有一个类似的例子:
使用正则表达式替换引号外的空格

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文