Regex 用于在HTML中查找类名的正则表达式

Regex 用于在HTML中查找类名的正则表达式,regex,grep,Regex,Grep,我想使用grep来找出一个html类是否在一堆文件中使用。正则表达式模式不仅应该找到,而且还应该找到 到目前为止,我可以通过下面的示例找到class=“foo”,但无法使用多个类名: grep-Ern“class=\”result+(\“|”)“* 有什么建议吗?谢谢 Mike取决于您的grep支持的元字符,请尝试: “class=\”([a-z]+?)+\”像这样的东西怎么样: grep -Erno 'class[ \t]*=[ \t]*"[^"]+"' * 这也将允许更多的空白,并将为您提

我想使用
grep
来找出一个html类是否在一堆文件中使用。正则表达式模式不仅应该找到

,而且还应该找到

到目前为止,我可以通过下面的示例找到class=“foo”,但无法使用多个类名:

grep-Ern“class=\”result+(\“|”)“*

有什么建议吗?谢谢
Mike取决于您的grep支持的元字符,请尝试:


“class=\”([a-z]+?)+\”

像这样的东西怎么样:

grep -Erno 'class[ \t]*=[ \t]*"[^"]+"' *
这也将允许更多的空白,并将为您提供类似以下内容的输出:

1:class="foo bar baz"
3:class = "haha"
要查看所使用的所有类,您可以将上面的输出管道化为以下内容:

cut -f2 -d'"' | xargs | sort | uniq

正则表达式是解析HTML的一个非常糟糕的工具。尝试查看simpleXML()。在HTML上滚动你自己的正则表达式是自找麻烦。

不要这样做。这会让你发疯:

相反,使用HTML解析器。这并不难

编辑:下面是PowerShell中的一个示例

Get-ChildItem -Recurse *.html | where { 
    ([xml](Get-Content $_)).SelectNodes( '//*' ) | where { $_.GetAttribute( "class" ).Contains( "foo" ) } 
}

找到一个解析器,例如:这不是解析HTML,这是模式匹配,正则表达式的用途是什么。你能发布一个命令行示例来做一些类似于Kaleb的grep的事情吗?你所说的是传统的智慧,但对于这个问题来说似乎有点过于复杂。-1因为Mike正在寻找一个使用grep而不是php的解决方案,而这并没有真正解决这个问题。o标志很好。我不知道——当然比我通常用来打印匹配字符串的perl命令要好。谢谢Kaleb!我的头还在缠着regex。。。真的很喜欢使用星号表示“零或更多”空格或制表符。。。那么我就不需要使用这些条件。非常有用。要搜索特定类的任何用法(在本例中为“用户”):
grep-Ern'class[\t]*=[\t]*“[^”]*用户[^”]*”*
是否从命令行?我还没找到。想为OP开发一个吗?