1

HTML ファイル内のすべてのクラス名を取得したいのですが、何regexを使用できるのでしょうか? マウントの仕方がわかりません。私はこのコードを持っています:

HTML

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

入手方法を知りたい:

myFirstClass
mySendCLass2

正規表現を使用して...使用しようとしましclass=".*"たが、名前以外のすべてを取得します。

4

4 に答える 4

2

HTML の解析に正規表現を使用しないでください。.NET を使用している場合は、HTML Agility Packなどを使用できます。

特定のクエリについては、おそらく次のようなことができます。

var classNames = htmlDoc.DocumentNode
    .Descendants("div")
    .Select(x => x.Attributes["class"].Value);
于 2013-08-16T13:21:40.127 に答える
2

正規表現はデフォルトで熱心であるため、は可能な限り長い文字列で開始および終了する".*すべてを取得します。必要なのは、最初の一致で停止することです。これを試して:"""

class=\"[^\"]*\"
于 2013-08-16T13:22:22.137 に答える
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/

于 2013-08-16T13:29:19.940 に答える
2

あなたの例は"class=".*"軌道に乗っているようですが、これらの主な問題は * が「貪欲」であることです。可能な限り多くの文字を使用し、おそらく行の最後の引用符に一致します。

1 つのオプションは、単語の文字のみを取得するために、\wの代わりに, を使用することです。.使用している言語によっては、HTML パーサーの方が適していると思います。多くの言語には、そのようなライブラリが用意されています。

注: 使用法が非常に基本的でない限り、\w を使用した正規表現では、スペースで区切られた複数のクラス名も考慮する必要があります。

于 2013-08-16T13:20:38.403 に答える