2016-04-08 23 views
-1

Node.jsを使用しています。regexを使って重複要素を削除するには?

私は倍数を削除し、それだけ単一のタグを作るためにどのように次の文字列

<em><em>    - first Occurrence 
<em><em><em>   - second Occurrence 
<em><em><em><em>  - third Occurrence 
<em><em><em><em><em> - fourth Occurrence 

を処理するための問題を抱えていますか?

いずれかが処理するために私を助けます。

ありがとうございます。

注:私は "(<em>(<em>)?)"

答えて

1

検索正規表現をしようとしています:

(<em>)+ 

をそして<em>と交換してください。

これは、<em>の1つ以上(+)の出現を1つずつ検出します。そして、これらのことにより、ここで

Live Demo on Regex101


重複タグを削除、単一<em>に置き換えられますが、すべてはあなたの正規表現がうまくいかない理由である:

(
<em>   # Captures first <em> 
(<em>)?  # Optional <em> 
) 

ので、この意志キャプチャは、最大で<em><em>です。これは、最初のオカレンスでは動作しますが、他方では動作しません。<em><em><em>がある場合、最初の2つは1つにマージされますが、最後のものは残っています。

ので、動作するように正規表現のために、あなたはそれを複数回実行しなければならない(すなわち、その上などを交換、その後、新たに置き換えた文字列に置換し、その後、元の文字列に置き換えます)

1

私が想定しています任意のタグがあり、あなたが気にしているのはemだけです。だから、私は正規表現で.+

console.log("<em><em><em><em>".replace(/(<.+?>)+/, "$1")) 

Ideone Demo

を使用しています
関連する問題