このフォーラムでは、私の "要求"に近いanswareを見ましたが、十分ではありません (Regexp to capture string between delimiters)。デリミタ間の正規表現のキャプチャ文字列
質問:私はHTMLページを持っており、このページのすべての "img"タグのsrcだけを取得し、cheerioを使用せずに(ノードjを使用しています)1つの配列に配置します。
問題は、デリミタを除外したいということです。 どうすればこの問題を解決できますか?
このフォーラムでは、私の "要求"に近いanswareを見ましたが、十分ではありません (Regexp to capture string between delimiters)。デリミタ間の正規表現のキャプチャ文字列
質問:私はHTMLページを持っており、このページのすべての "img"タグのsrcだけを取得し、cheerioを使用せずに(ノードjを使用しています)1つの配列に配置します。
問題は、デリミタを除外したいということです。 どうすればこの問題を解決できますか?
はいこれは正規表現では可能ですが、ネイティブのDOMメソッドを使用する方がはるかに簡単です(おそらく高速ですが、私にはそれを引用しないでください)。正規表現のアプローチから始めましょう。私たちは、簡単にimg
タグのsrc
を解析するためにキャプチャグループを使用することができます。
var html = `test<div>hello</div>
<img src="first">
<img class="test" src="second" data-lang="en">
test
<img src="third" >`;
var srcs = [];
html.replace(/<img[^<>]*src=['"](.*?)['"][^<>]*>/gm, (m, $1) => { srcs.push($1) })
console.log(srcs);
は、しかし、より良い方法を使用することですgetElementsByTagName
:
(いくつかの種類を取得します以下の点に注意してください。親ドメインのURLのSRCSが偽物/相対的なものが、あなたのアイデアを得るため)
var srcs = [].slice.call(document.getElementsByTagName('img')).map(img => img.src);
console.log(srcs);
test<div>hello</div>
<img src="first">
<img class="test" src="second" data-lang="en">
test
<img src="third" >
Tyに私に連絡することが大変です。私はそれがずっと遅いと思うので私はcheerioを使用していない。私はリクエストモジュールを持ったHTMLページを取得して、すべてのイメージのすべてのsrcを抽出したいだけです。 –
なぜあなたはcheerioを使いたくないですか? –
ほとんどの環境では、デリミタを終了区切り文字のための[lookaround assertions](http://www.regular-expressions.info/lookaround.html) - lookahead '(?=)'と 'look? =) 'で始まります。ただし、JavaScriptでは見た目のヒントがサポートされていないため、[キャプチャグループ](http://www.regular-expressions.info/brackets.html)などの回避策が必要です。 –
何を試しましたか? –