我想使用grep
來找出在一堆文件中是否使用了html類。正則表達式不僅可以找到<p class="foo">
,也可以找到<p class="foo bar foo-bar">
。在HTML中查找類名的正則表達式
到目前爲止我能找到類=「富」與下面這個例子中,不能使其與多類名工作:
grep -Ern "class=\"result+(\"|)" *
有什麼建議?謝謝! 邁克
我想使用grep
來找出在一堆文件中是否使用了html類。正則表達式不僅可以找到<p class="foo">
,也可以找到<p class="foo bar foo-bar">
。在HTML中查找類名的正則表達式
到目前爲止我能找到類=「富」與下面這個例子中,不能使其與多類名工作:
grep -Ern "class=\"result+(\"|)" *
有什麼建議?謝謝! 邁克
要看什麼元字符您的grep supprts,嘗試:
'類= \ 「(即[az] +?)+ \」'
怎麼是這樣的:
grep -Erno 'class[ \t]*=[ \t]*"[^"]+"' *
這也將允許更多的空白,應該給你輸出類似於:
1:class="foo bar baz"
3:class = "haha"
要查看使用的所有類,你從上面的輸出可以通過管道到以下幾點:
cut -f2 -d'"' | xargs | sort | uniq
正則表達式解析HTML一個非常糟糕的工具。試試看simpleXML(http://php.net/manual/en/book.simplexml.php)。在HTML上滾動您自己的regEx是乞求的麻煩。
不要做。它會讓你瘋狂:RegEx match open tags except XHTML self-contained tags
而是使用HTML解析器。這並不難。
編輯:這是在PowerShell中
Get-ChildItem -Recurse *.html | where {
([xml](Get-Content $_)).SelectNodes('//*') | where { $_.GetAttribute("class").Contains("foo") }
}
從命令行?我還沒有找到。關心爲OP開發一個? – slebetman 2010-01-04 00:12:23
@slebetman:完成。 – 2010-01-04 15:23:19
爲例-o標誌是好的。我不知道這件事 - 肯定會打敗我通常用來打印匹配字符串的perl命令。 – 2010-01-01 21:06:28
謝謝Kaleb!仍然圍繞着正則表達式......我真的很喜歡用「零或多個」空格或製表符來使用這個明星......然後我不需要使用這些條件。很有幫助。 – Mike 2010-01-04 15:53:52
要搜索任何特定類的使用(在本例中爲「users」):'grep -Ern'class [\ t] * = [\ t] *「[^」] * users [^「] *」' *' – bjudson 2015-01-16 17:14:57