regex 不使用lookbehind删除括号前后的空格

cgvd09ve  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(126)

我试图使用正则表达式删除右括号前后的空格,问题是Safari不支持我的解决方案,有没有其他方法可以使用“lookbehind”功能?
我的字串为例:check IN [ "[hello world]*" ] OR host IN ( abc,123)
我期待得到:check IN ["[hello world]*"] OR host IN (abc,123)
我目前的解决方案:(?<=[([])\s+|\s+(?=[)\]])

5lwkijsr

5lwkijsr1#

假设 :
1.您 * * 总是 * * 希望 删除 ([ 后面 的 所有 空格 以及 )] 前面 的 所有 空格 , 并且
1.在 文本 常量 中 , 您 不 希望 有 ()[] 保持 不变 * ( 这 实际 上 只是 #1 的 一 个 子集 , 但 我 认为 值得 特别 指出 , 因为 这 是 一 个 很 大 的 假设 ) *
... 那么 我 认为 嵌套 不是 问题 , 我们 可以 使用 正则 表达式 来 实现 。 而且 我 认为 您 根本 不 需要 查看 :

const result = str.replace(/([\[(])\s+|\s+([\])])/g, "$1$2");
//                          ^^^^^^^^^^ ^^^^^^^^^^
// after opening ( or [ −−−−−−−−/          |
// before closing ) or ] −−−−−−−−−−−−−−−−−−/

中 的 每 一 个
这里 的 技巧 是 我们 使用 两 个 捕获 , 然后 在 替换 中 使用 两 个 ;它们 中 的 一 个 将 总是 "" , 而 另 一 个 将 是 "(""["")""]"
示例 :
第 一 次

相关问题