我正试图在 Sublime Text 上捕捉到这一点。
有这个:
-webkit-calc(50%+4px/2+32px-32px*23%)
想要在 calc 中捕获所有 + 和 - 符号,以便我可以在它们之间添加一个空格...
像这样:
-webkit-calc(50% + 4px/2 + 32px - 32px*23%)
我已经有了这个但是缓存了所有内容在 calc(***) 中但是只想要所有的 + 和 -
(?<=calc\()(.+)(?=\))
希望你们能帮我解决这个问题,
提前致谢
最佳答案
你的 (?<=calc\()(.+)(?=\))
不起作用,因为它只抓取 calc(
之间的内容最后一个 )
在线上。你需要匹配 +
或 -
仅在这些分隔符内,这就是 \G
的位置接线员进来。
如果没有嵌套括号,可以使用
(?:calc\(|(?!^)\G)[^)+-]*\K[-+]
替换为 $0
.为了更安全,在 calc
之前添加一个单词边界: \bcalc
.
参见 regex demo
模式匹配:
-
(?:calc\(|(?!^)\G)
- 火柴calc(
(与calc\(
或\bcalc\(
匹配)或上一次成功匹配的结尾(与(?!^)\G
) -
[^)+-]*
- 除)
以外的 0+ 个字符,+
和-
-
\K
- 省略到目前为止匹配的字符 -
[-+]
- 匹配-
或+
如果您只想在缺少空格的地方添加空格,您可以匹配运算符周围的所有空格并将它们替换为单个空格:
(?:calc\(|(?!^)\G)[^)+-]*?\K\s*([-+])\s*
^^^ ^^^^
并替换为 $1
.这将变成 -webkit-calc(50%+ 4px/2 +32px - 32px*23%)
至 -webkit-calc(50% + 4px/2 + 32px - 32px*23%)
.
关于regex - 匹配字符串之间的所有 (+) 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36914065/