2012-02-28 9 views
0

私はHTMLコンテンツを持っており、これを使ってテキストコンテンツを入手しています。括弧で囲まれた部分文字列の一致に正規表現を適用するにはどうすればよいですか?

string='<img src="Randomz" alt="Randomz Image">Randomz is the name of the image</img><img src="Randomz" alt="Randomz Image">Randomz is the name of the image</img><img src="Randomz" alt="Randomz Image">Randomz is the name of the image</img><img src="Randomz" alt="Randomz Image">Randomz is the name of the image</img>' 
re=(/([<][^<]+>)([^<]+)([<][^<]+>)/g); 
newstr=string.replace(re,"$1$2$3"); 

これは私に元の文字列を返します。

私の問題は、私はあること)

newstr=string.replace(re,"$1$2$3"前に別のstring.replace(regex,$2)を適用する必要があるということですが、私は最終的な解決策を適用する前に、パラメータ化キャッチに別の正規表現を適用する必要があります。

+0

いつもimgタグである必要はなく、何でもかまいません。さらに私の問題は、テキストの内容だけを置き換え、注文をそのままに保つことです。 – Nishant

+1

この例では、子ノードまたは終了タグを持たない要素に対して、子テキストノードと終了タグを使用しています。 – kennebec

+1

RegExpを使用してHTMLを解析しないでください!すでにエラーがあるようですが、それは '<[^>] +>'(または単に '<.+?>')であってはいけませんか? – Bergi

答えて

4
あなたはここでやっているのかわからない

が、私はあなたがreplaceコールバックを探していると思います:サイドノートとして

string='<img src="Randomz" alt="Randomz Image">Randomz is the name of the image</img><img src="Random' 
re=(/([<][^<]+>)([^<]+)([<][^<]+>)/g); 
newstr=string.replace(re, function($0, $1, $2, $3) { 
    $2 = do_something_with($2); 
    return $1 + $2 + $3; 
}); 

は、正規表現は、HTML変換のための最高のツールではありません。

+0

正確には、ありがとう。これは、クリーンなHTMLコードの単純なハックです。 HTML変換には不向きだと私は理解しています。 – Nishant

+0

@Nishant - 第1グループと第3グループで '[^ <]' to '[^>]を変更してください。そうでなければ正しく動作しません。上記のコードをいくつかのHTML要素を持つ文書に適用し、$ 1、$ 2などに戻ってくるものを調べると、私の意図がわかります。 –

関連する問題