如何使用正则表达式在html文件中搜索类名?

时间:2013-08-16 13:16:58

标签: regex html-parsing

我想知道自己是否想要在html文件中获取所有类名,我可以使用regex?我不明白我可以装载它的方式。我有这段代码:

HTML

<html>
    <div class="myFirstClass"></div>
    <div class="mySecondClass2"></div>
</html>

我想知道如何获得:

myFirstClass
mySendCLass2

使用正则表达式...我尝试使用class=".*"但它获取了名称之外的所有内容。

4 个答案:

答案 0 :(得分:2)

"class=".*"的例子似乎在轨道上,但这些问题的主要问题是*是“贪婪的” - 它会占用尽可能多的字符,可能会匹配最后一个引号线。

一种选择是使用\w代替.,仅检索单词字符。根据您使用的语言,我认为HTML解析器可能是更好的选择。许多语言都有这样的库。

注意:除非您的使用非常基本,否则使用\ w的正则表达式还需要考虑空格分隔的多个类名。

答案 1 :(得分:2)

不要使用Regex来解析HTML。如果您使用的是.NET,则可以使用类似HTML Agility Pack

的内容

对于您的特定查询,您可能会执行类似的操作;

var classNames = htmlDoc.DocumentNode
    .Descendants("div")
    .Select(x => x.Attributes["class"].Value);

答案 2 :(得分:2)

默认情况下,正则表达式非常渴望,因此".*将以"开头,以"结尾,以获取最长的字符串。你需要的是它停在第一个匹配的"上。试试这个:

class=\"[^\"]*\"

答案 3 :(得分:2)

使用map function

var classes= $("div").map(function() {
    return this;
}).get();
for(i=0;i<classes.length;i++){
    console.log($(classes[i]).attr('class'));
}

JSFiddle工作代码链接

http://jsfiddle.net/mkamithkumar/dLkkY/