2011-10-20 1 views
0

今日私は正規表現で私の頭を壊します。テキストの一部を抽出できません。誰かがヘルプを使ってRegExpでテキストを抽出できますか?

<!--TEXT[title]--> 
sometext 1 
<!--END--> 
<!--TEXT[title]--> 
sometext 2 
<!--END--> 

は、私はあなたが次の動作するはずの正規表現を必要とすると仮定すると、私は、この正規表現コードmytext.match(/<!--TEXT[([.|\w|\r|\n]+)<!--END-->/m);

+3

ですか?もしそうなら、正規表現でHTMLを解析しないでください:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454代わりにDOMを解析してください。 –

+1

@JackManeyこれは、これまでの私の好きな答えです。 – MrMisterMan

+0

私はajax経由でテキストを読み込みます。 – iLevi

答えて

3

を持って

["title]-->sometext1" 
,"title]-->sometext2"] 

配列でこれを取得したい:私のテキストは、このようなものです

<\!--TEXT\[([^\]]*)\]-->\s*\n(.*)(?!<\!--END-->) 

このテキストがDOMにある場合は、DOMを解析する方がはるかに良いでしょうこれまで

説明:一部のHTMLの内側に、このテキストは

<\!--TEXT\[ // Match the start. 
([^\]]*) // Match (in group 1), everything up until the next ']' 
\]-->\s*\n // Match to the end of this line. 
(.*) // Match anything (in group 2). 
(?!<\!--END-->) // Stop before the end tag is next. (This will mean you get everything up to, but not including the previous line break). 
+1

もちろんこれはネストされたコメントでは失敗しますが、これはOPが知っておくべきことです... – FailedDev

+0

ネストされたコメントを扱っているなら、レクサーやDOMが必要です。一方、この特定のケースでは、(何らかのエラーがなくても)ネストされているようには見えません。 – Thor84no

関連する問題