1

我正在尝试在 css 文件中获取每个单独的关键帧声明,然后复制它,但插入 moz/ms/o 来处理每个带有关键帧的浏览器。

我正在使用这个正则表达式:

(@)(-webkit-)([\s\S]*)(\}\R\}\R@)

尝试捕获每个集合(请参阅我的Rubular中的完整示例)

4

2 回答 2

2

尝试这个:

/(@)(-webkit-)(.*?\R\})/m

m修饰符使其成为多行正则表达式,因此匹配.换行符。我在最后删除了匹配@项,因为它无法匹配文件中的最后一个块。并且*?使匹配不贪心,因此一次只匹配一个块。

红色的

于 2013-10-18T01:23:28.137 回答
0

你得到的最接近的是...

(@-webkit-[^}]*}\s*to\s*{[^}]*}\s*})

...它可以很好地处理 CSS 文件中的异常/损坏的缩进。这是它的工作原理:


  1. (启动捕获组...

  2. @-webkit-……就这句话。

  3. [^}]* }继续,直到您看到一个 '}' 字符。

  4. \s* to \s* {接下来是短语'to',然后是'{'......

  5. [^}]* }...继续直到下一个 '}' 字符。

  6. \s* }最后的 '}' 字符,可能前面有空格。

  7. )停止捕捉。


由于正则表达式不理解嵌套,因此可能存在误报的情况。

于 2013-10-18T01:40:25.870 回答