2017-01-29 5 views
1

GoogleのアプリケーションスクリプトはHTTPレスポンスのコンテンツテキストを取得します。抜粋は次のとおりです。タイトルとiframeを抽出するJavascriptの正規表現

<p style="text-align: left;"><span style="background-color: rgb(242, 195, 20);"><span style="color: rgb(192, 80, 77);">Disclaimer:</span></span><span style="background-color: rgb(255, 255, 255);">Please note,</span><a href="http://www.g00gl3.com"><span style="background-color: rgb(255, 255, 255);">http://www.g00gl3.com</span></a><span style="background-color: rgb(255, 255, 255);"> or </span><a href="http://www.g00gl3.com"><span style="background-color: rgb(255, 255, 255);">www.G00gl3.com</span></a><span style="background-color: rgb(255, 255, 255);"> is only video embedding websites. All of the videos found here come from 3rd party video hosting sites. We do not host any of the videos. Please contact to appropriate video hosting site for any video removal.</span></p> 
<div style="text-align: center;"><strong><span style="background-color: rgb(255, 255, 255);">Dailymotion <br><br></span></strong></div> 
<div style="text-align: center;"><iframe src="http://www.dailymotion.com/embed/video/foo1234567890bar? syndication=202279" width="640" height="360" frameborder="0"></iframe></div> 
<div style="text-align: center;"><strong><span style="background-color: rgb(255, 255, 255);">Alternate Video <br><br></span></strong></div> 
<div style="text-align: center;"><iframe src="http://hqq.tv/player/embed_player.php?vid=1234567890&amp;autoplay=no" width="720" height="450" frameborder="0"></iframe></div> 

この抜粋から、タイトル(DailymotionまたはAlternate Video)とiframeを抽出する必要があります。

iframeのみが既に完了しています。今、期待

/<iframe(.*)\/iframe>/g 

は、誰もが上記のみフェッチするために正規表現を書くのを助けることができる

Dailymotion <br><br></span></strong></div> 
<div style="text-align: center;"><iframe src="http://www.dailymotion.com/embed/video/foo1234567890bar? syndication=202279" width="640" height="360" frameborder="0"></iframe> 

Alternate Video <br><br></span></strong></div> 
<div style="text-align: center;"><iframe src="http://hqq.tv/player/embed_player.php?vid=1234567890&amp;autoplay=no" width="720" height="450" frameborder="0"></iframe> 

です。

+2

多分、正規表現の代わりにDOMパーサーを使うことができます。 RegexはネストされたXMLをうまく扱いません。 –

+0

返信のために@TimBiegeleisenに感謝します。 Google Apps ScriptにDOMパーサーがあるかどうかを確認する必要があります。 – Hsehdar

答えて

1

動作するはずです、これを試してみてください:

これはあなたが必要なすべての情報を抽出します、あなただけのこれらの2つのタイトルを検索する必要がありますと仮定し
/255\);">([a-zA-Z]+\s+.*)<br><br>/g 
+0

お返事ありがとうございます@ l-lvadim。これは期待に非常に近いものでした。 – Hsehdar

0

[\s\S]*(Dailymotion|Alternate Video)[\s\S]*(<iframe[\s\S]*<\/iframe>) 

Here'sページをすることができますがそれを参照してください:

+0

お返事ありがとう@Kesty。他のタイトルと同様に仮定を立てることはできませんでした。 – Hsehdar

0

最初の答えの仕事が、私は非常に制限していないと思う。この正規表現[\s\S]*(Dailymotion|Alternate Video)[\s\S]*(<iframe[\s\S]*<\/iframe>)あなたのexemplesで動作しますが、HTMLコードが間違っている場合正規表現のマッチ(あなたはそれをテストすることができます)。

私は2正規表現をより強くしましたが、不便は正規表現が非常に長いことです。私の正規表現の最初の部分は、この行を一致させることです。

<div style="text-align: center;"><strong><span style="background-color: rgb(255, 255, 255);">Dailymotion <br><br></span></strong></div>

正規表現:HTMLが "有効" である場合

^(\<((\D+)([a-z]*=\"[\S]*|[ ]\.{0,1}[\S]*\")*)\>).*(Dailymotion|Alternate Video).*\<\/\3\>|(\<\D+\/\>)$

https://regex101.com/r/XthACq/1

キャプチャグループを確認します。例として、あなたは閉めることができません。 htmlの最初の行が一致すると、2番目の正規表現を使用してを確認できます。

<div style="text-align: center;"><iframe src="http://www.dailymotion.com/embed/video/foo1234567890bar? syndication=202279" width="640" height="360" frameborder="0"></iframe></div>

この正規表現によってマッチです:最初の正規表現のよう

^(\<((\D+)([a-z]*=\"[\S]*|[ ]\.{0,1}[\S]*\")*)\>).*<(iframe)([a-z]*=\"[\S]*|[ ]\.{0,1}[\S]*\")+\><\/\5>\<\/\3\>|(\<\D+\/\>)$

https://regex101.com/r/wBBOi5/1

、HTMLコードを検証しています。キャプチャグループを使用して、タイトル、リンク、すべての属性を抽出できるようになりました。

+0

返信のために@Mattasseに感謝します。私はこの正規表現を微調整し、もう一度試してみるかもしれない。 – Hsehdar

0

@ l-vadimの回答が最も近く、私はそれを使用しています。

/255\);">([a-zA-Z]+\s+.*)<br><br>/g