匹配字符串之间的所有(+)符号

时间:2016-04-28 12:02:22

标签: regex

我试图在Sublime Text上抓住这个。

有这个:

-webkit-calc(50%+4px/2+32px-32px*23%)

想要捕获calc中的所有+和 - 符号,这样我就可以在它们之间添加空格......

喜欢这个

-webkit-calc(50% + 4px/2 + 32px - 32px*23%)

我已经有了这个,但缓存了calc(***)中的所有内容,但只想要所有的+和 -

(?<=calc\()(.+)(?=\))

希望你能帮助我这个人,

提前致谢

1 个答案:

答案 0 :(得分:4)

您的(?<=calc\()(.+)(?=\))不起作用,因为它只会抓取该行calc(和最后)之间的内容。您需要仅在这些分隔符内匹配+-,这就是\G运算符所在的位置。

如果没有嵌套括号,则可以使用

(?:calc\(|(?!^)\G)[^)+-]*\K[-+]

替换为 $0 。为了更安全,请在calc之前添加单词边界:\bcalc

请参阅http://nimbupani.com/using-background-clip-for-text-with-css-fallback.html

regex demo             V

enter image description here

模式匹配:

  • (?: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%)