正则表达式仅在{display:none}之前提取CSS类名

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

  preg_match_all('@ \。(。*!\。){display:none} @','。UlEa {display:none} .RNLW {display:inline} .jc0k {display  :none} .Lyhf {display:inline}',$ matches); 
</ code> </ pre>

$ matches为空。
如何查看正确的正则表达式?</ p >
</ div>

展开原文

原文

I can't find a correct regular expression to extract classes names. It is my code:

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

The $matches is empty. How should look correct regular expression?

dsklfsdlkf1232
dsklfsdlkf1232 谢谢,它有效。当我没用的时候!函数返回1结果:UlEa{display:none}.RNLW{display:inline}.jc0k{display:none}.Lyhf
大约 4 年之前 回复
doutuo7609
doutuo7609 试试'@\。(\w+){display:none}@'。你为什么用!?
大约 4 年之前 回复

1个回答

Note that your regex matches a literal ., then captures a sequence of any 0+ chars other than linebreak symbols as many as possible up to the last !. sequence and then matches {display:none}. Since your text does not contain ! nor the next . you have no match.

One way to get your matches is to use \w+ (=one or more word characters, those in the [a-zA-Z0-9_] set) pattern inside Group 1:

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

See the regex demo

PHP demo:

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  )
dqhmtpuy94946
dqhmtpuy94946 谢谢。 我会加入聊天,但不是因为这个原因,因为我有一个目的。
大约 4 年之前 回复
dsnhalq37505
dsnhalq37505 如果您想谈一谈,请考虑加入RegEx - 正则表达式聊天,或者另外提出问题。
大约 4 年之前 回复
dqgg25493
dqgg25493 不,我实际上并不是指解析器,尽管它们存在。 如果你不认为它与此相关,那就没关系。
大约 4 年之前 回复
doo6568
doo6568 但是,我看到这已经超出了这个答案的范围。 如果标题具有误导性,最好将其调整为OP具有的实际任务。 至于通用的CSS解析,我建议使用一个专用的库,比如phpclasses.org/package/1289-PHP-CSS-parser-class.html或github.com/sabberworm/PHP-CSS-Parser。
大约 4 年之前 回复
dqw70970
dqw70970 无论CSS块包含什么都不重要。 在每个单独的块之前只有所有id和类名。 像id-name作为id,class-name和jc0k作为第一个块的类名和id-name-two作为第二个的id。 我看到这个问题的标题非常相关,所以我认为如果你扩大答案的范围以涵盖大多数可能的情况(以供将来参考),不仅提取类名而且提取ID,这可能会很棒。
大约 4 年之前 回复
douzhangjian1505
douzhangjian1505 只有一个CSS块具有{display:none}并且它正确匹配。 这意味着它可能是一个不同的问题,您可以单独询问。 此外,您还没有提到从该字符串中提取所需的确切值。
大约 4 年之前 回复
dongta1824
dongta1824 这个给你。 在CSS块声明之前捕获所有id /类名称。
大约 4 年之前 回复
dongza1708
dongza1708 一旦为此提供测试用例,当然。 另外,试试'@ \。([^ {。] +){display:none} @'。
大约 4 年之前 回复
doumi1884
doumi1884 但是,这不是OP的要求,你可以添加一个版本来捕获CSS主体之前的所有类名/ ID吗? +1
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐