2010-11-19 9 views
1

よし殺害されたので、私は次の出力があります。のJava正規表現のヘルプ - ホワイトスペースは、私が

<p style="margin-top: 0"> 

</p> 

私は<br />に置き換えることにしたいです。私は、次のコードを持っている:

string.replaceAll("<p([^>]*)></p>","<br/>"); 

私はホワイトスペースを持っている唯一の段落タグを置き換えるために>と<タグの間に置く必要があるでしょうか?つまり、それらの間に文字や数字はありません。ほとんどのシナリオを処理する必要があり

string.replaceAll("<p([^>]*)>\\s*</p>", "<br/>"); 
+0

このASCIIデータまたはUTF-8データですか? – tchrist

+5

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tagsへの義務的な参照 –

+0

Davidがリンクしているものの要約:HTML/XML –

答えて

1
string.replaceAll("<p([^>]*)>\\s+?</p>","<br/>"); 

おかげ

+0

これはまた、必要に応じて機能し、少し安全です。ありがとう。 – Samsquanch

+0

私は最小限のものと最大のASCII空白のマッチがあなたを買おうとしているかどうかは分かりません。また、私のHTMLページは '\ x85'と' \ xA0'文字で常にいっぱいです。 Javsの '\ s'実装は破壊されています。 – tchrist

+0

「安全」ですか?私はCthulhuの群衆に参加するつもりだと思う。 Sheesh! – tchrist

1

は、このメソッドを使用します。少なくとも1つの空白文字が必要な非貪欲な繰り返しです。もちろん、HTMLパーサを使用するとより一貫した結果が得られます。

+0

それはかなり純粋な正規表現です。あなたはそれを正しく行う機会に耐えるために、[もっともっと注意する]必要があります(http://stackoverflow.com/questions/4044946/regex-to-split-html-tags/4045840#4045840)。おかげさまで – tchrist

+0

私は '\\ s'を試みたが、*を追加するとは思わなかった。 – Samsquanch

+0

@ user485418:最後にチェックしたところ、Javaの '\ s'はASCIIデータにのみ有効でした。あなたが持っていることを願っています。 – tchrist