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

标签 regex

我正试图在 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

enter image description here 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%) .

关于regex - 匹配字符串之间的所有 (+) 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36914065/

相关文章:

regex - 如何使用正则表达式解析 Perl 中引用的 CSV?

regex - 正则表达式 :match a word and a length

regex - 基于Julia中正则表达式的分割线

Javascript RegExp + 单词边界 + unicode 字符

javascript - JavaScript 中的正则表达式自定义单词边界

python - 如何在 Python 中搜索正则表达式匹配项?

java - 电子邮件验证模式 Unclosed Character Class

regex - 使用groovy中的正则表达式从字符串中提取数字

Java正则表达式。不包括定界符的组

regex - 使用正则表达式通过 Google 标签管理器提取部分 URL