2016-08-27 7 views
1

イタリックHTMLタグを再配置する必要のある電子ブックで使用するための単純なHTMLドキュメントがありますが、手動でHTMLタグを検索して再配置するために正規表現を書くことができますか?もしそうならば

<p>some text <i>italic text</i> more text</p> 

<p> some text <i>italic some more</p> 

<p>even more italic on this line</p> 

<p>italic</i> and some regular text</p> 

そして、私はそれが見えるようにしたい:閉じていない<i>タグを持っている段落がある場合は、一言で言えばそう

<p>some text <i>italic text</i> more text</p> 

<p> some text <i>italic some more</i></p> 

<p><i>even more italic on this line</i></p> 

<p><i>italic</i> and some regular text</p> 

、追加例えば、これがあるように見えることができます</p>タグの前に近いタグ。その後、閉じるタグが見つかるまで、イタリックタグをすべての後続の段落に追加し続けます。ここでは、その段落の先頭に<i>というタグが追加されます。

+1

[RegExはXHTML内蔵タグ以外のオープンタグと一致する可能性があります](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – user1937198

+0

それをHTMLパーサーで解析し、結果をシリアライズします。それが有効になります。 – Ryan

答えて

2

user1937198とRyan(詳細は前述のメッセージRegEx match open tags except XHTML self-contained tags)で説明したように、正規表現は正しいツールではありません。ブラウザーのJavaScriptエンジンには、あなたの処理に役立つHTMLパーサーがあります。コンソールでそれを確認してください:あなたは、次の文を入力するときに、あなたが最初にあなたのテキストと、出力解析された結果を解析

var d = document.createElement("DIV"); 
d.innerHTML = "<p>some text <i>italic text</i> more text</p>\n"+ 
       "<p> some text <i>italic some more</p>\n"+ 
       "<p>even more italic on this line</p>\n"+ 
       "<p>italic</i> and some regular text</p>"; 
d.innerHTML; 

。手元の場合:

"<p>some text <i>italic text</i> more text</p> 
<p> some text <i>italic some more</i></p><i> 
<p>even more italic on this line</p> 
</i><p><i>italic</i> and some regular text</p>" 

だから、あなたが探している正確に何ありませんが、少なくとも、<i>タグは段落の両端に適切に閉じられています。段落の末尾の後に<i>モードを続けると、新しい<i><p>の外に出ます(厳密に言えば、<p>要素の外にテキストがイタリックでなければならない可能性があるため)。

関連する問題