我正在尝试使用正则表达式在css文件中查找所有@viewport(包括@ -ms-viewport等)块:
/@.*?viewport.*?\}/ms
我希望得到这样的结果:
@viewport { ... }
但是此正则表达式返回最长的结果,包括从第一次出现的@
到viewport
块i的部分css文件。 e。:
@media (min-width ... @viewport { ... }
我在*?
和@
之间使用了惰性量词viewport
,但获得了最大的结果。我的错误在哪里?
答案 0 :(得分:2)
使用.*?
而不是[^@]*
来匹配非@
的任何字符
/@[^@]*viewport.*?\}/ms
答案 1 :(得分:0)
在这里,我们将以一个简单的表达式开始,该表达式在-
之后有一个破折号@
:
$re = '/@(-.+)?viewport.+?\}/ms';
$str = '@media (min-width ... @viewport { ... }@media (min-width ... @viewport { ... }
@media (min-width ... @viewport { ... }
@media (min-width ... @-ms-viewport { ... }';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);