2016-07-22 6 views
0

私がしたいことは、そのタグが他のタグの中に入れ子になっていても、文字列 "test string"を持つタグを見つけることです。regex(JS)を使用したコンテンツによるhtmlタグの検索

HTMLの例:

<section class="test-class1"><div><p class="test-class2">something else....test string</p></div></section> 

正規表現:

/.*<([a-zA-Z]*).*>.*?test string/g 

出力:

p 

私はテストのために、https://regex101.com/#javascriptを使用しています。

この正規表現は、HTMLが小さい場合はうまく動作しますが、HTMLのサイズが大きくなるとタイムアウトします。

正規表現のパフォーマンスを向上させる方法はありますか?

+0

を試してみてください? –

+1

このタスクにregexを使用しないでください。たとえHTMLが整形式であっても、あまりにも多くの落とし穴があります。 'テスト文字列'またはテスト文字列は2つの例に過ぎません。 –

+0

@David Thomasこのページ[http://visao.sapo.pt/verde/2016-07-21-Vendas-mundiais-crescem-no-primeiro-semestre]では、セレクタクラス= "fullArticle"、そしてその正規表現でテストした後、正規表現で使用するページからランダムなテキストを選んだ – cdn34

答えて

0

< *(\w+)[^<>]*>[^<]*(?:<[^>]*)*test string

一致する最初のキャプチャグループにp$1)。そんなにスピードアップすることはできません。あなたは純粋なJS関数を使う方がよいでしょう。

+0

実際にはうまくいきました。ありがとうございます。 – cdn34

0

はどのようにHTMLそれが問題になるんものに、この正規表現を実装している。この<(\w+)[^>]+>[^>]+test string

var data = '<section class="test-class1"><div><p class="test-class2">something else....test string</p></div></section>'; 
var regex = /<(\w+)[^>]+>[^>]+test string/ 
var output = regex.exec(data); 
alert(output[1]); 

Online Regex

関連する問題