正则表达式,只获得第一次出现并停止

时间:2013-10-18 01:04:29

标签: css regex css-animations

我正在尝试抓取css文件中的每个关键帧声明,并将其复制,但插入moz / ms / o以使用关键帧处理每个浏览器。

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

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

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

2 个答案:

答案 0 :(得分:2)

试试这个:

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

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

Rubular

答案 1 :(得分:0)

你最接近的是......

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

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


  1. (启动捕获组...

  2. @-webkit- ...在这句话上。

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

  4. \s* to \s* {接着,短语'to',后跟'{'...

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

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

  7. )停止捕捉。


  8. 可能是因为regex doesn't understand nesting以来你有误报。