2016-05-12 7 views
0

タグを除いた2つのXMLタグの間でコンテンツを抽出する必要があります。JavaScriptの正規表現:2つのタグ間のコンテンツ

PS:私はこれをXMLの解析に使用しません。私は、JavaScriptでRegExを使用しているので、見た目のヒントは機能しません。

私は間違っていますか?

XML:

<location maps=""> 
    RewriteMap map txt:map.txt 
    RewriteMap lower int:tolower 
    RewriteCond %{REQUEST_URI} ^/([^/.]+)\.html$ [NC] 
    RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND 
    RewriteRule .? /index.php?q=${map:${lower:%1}} [NC,L] 
</location> 

正規表現:

/(?:(?=(\<(?!\/)(.*?)\>)))([\s\S]*?)(?=(\<(?=\/)(.*?)\>))/igm 

結果:

<location maps=""> 
    RewriteMap map txt:map.txt 
    RewriteMap lower int:tolower 
    RewriteCond %{REQUEST_URI} ^/([^/.]+)\.html$ [NC] 
    RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND 
    RewriteRule .? /index.php?q=${map:${lower:%1}} [NC,L] 

私は

欲しいもの
RewriteMap map txt:map.txt 
RewriteMap lower int:tolower 
RewriteCond %{REQUEST_URI} ^/([^/.]+)\.html$ [NC] 
RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND 
RewriteRule .? /index.php?q=${map:${lower:%1}} [NC,L] 
+0

あなたの代わりに正規表現でこれを行うので、まともなXMLパーサーを使用することができた場合、超簡単かつ堅牢な方法が存在する必要があります。 [なぜ正規表現でXMLを解析するのは悪い考えですか?](http://stackoverflow.com/questions/8577060/why-is-it-such-a-bad-ide-to-parse-xml-with-正規表現) – har07

+0

実際には単なる例です。複数の行で2つの '物事'の間でコンテンツを取得しなければならないとしても、HTML、XMLなど何でも使用できます。 – HovyTech

+0

どのような環境ですか? JS、PHP、エディタ...? – ClasG

答えて

0

どの程度

<(\w+)[^>]+>\n*([\s\S]*)<\/\1> 

それが繰り返さ/で始まるタグにすべてをキャプチャし、あなたのタグをつかむでしょう。キャプチャグループ2

Check it out here at regex101

結果。また、次の正規表現を使用することができます

+0

それは私が探しているものではありません。私はすでに固定のJavaScript RegExテンプレートを持っていますが、変更点はRegExだけです。 – HovyTech

+0

あなたはあなたがマッチを使用しなければならないという意味ですか、グループをキャプチャしないのですか? – ClasG

+0

テンプレートは、入れられたRegExをループします。テンプレートはRegExを見つけて何かに置き換えます。 123のRegExオプションがある場合、1つのRegExオプションのテンプレートだけを変更したくないです。タグを除いて、2つのタグの間にあるものをキャプチャするためにRegExが必要です。 – HovyTech

1

:(タグ名が一定の場合)

<location[^>]*>([^<]+)</location> 
+0

それでも、。 – HovyTech

+0

のタグで結果が得られました。私はあなたの与えられた例に基づいて正規表現を作っています。 正常に動作しています。 –

+1

JavaScriptでは動作しません。 – HovyTech

関連する問題