正则表达式,只提取{display:none}之前的CSS类名


Regular expression to only extract CSS class names before {display:none}

我找不到正确的正则表达式来提取类名。这是我的代码:

preg_match_all('@'.(.*!'.){display:none}@', '.UlEa{display:none}.RNLW{display:inline}.jc0k{display:none}.Lyhf{display:inline}', $matches);

$匹配为空。怎样才能看起来正确的正则表达式?

请注意,您的regex匹配文字.,然后捕获除换行符号之外的任何0+字符序列,直到最后一个!.序列,然后匹配{display:none}。由于您的文本不包含!,也不包含下一个.,因此您没有匹配项。

获得匹配的一种方法是在第1组中使用'w+(=一个或多个单词字符,这些字符在[a-zA-Z0-9_]集合中)模式:

'.('w+){display:none}

查看regex演示

PHP演示:

preg_match_all('@'.('w+){display:none}@', '.UlEa{display:none}.RNLW{display:inline}.jc0k{display:none}.Lyhf{display:inline}', $matches);
print_r($matches[1]); // => Array ( [0] => UlEa [1] => jc0k  )