好了,所以我有以下的輸出:Java的正則表達式的幫助 - 白色空間是殺害我
<p style="margin-top: 0">
</p>
,我想用<br />
更換。我有以下代碼:
string.replaceAll("<p([^>]*)></p>","<br/>");
我需要什麼,以取代只有那些空白段落標記>和<標籤之間放?也就是說,它們之間沒有字符或數字。
感謝
好了,所以我有以下的輸出:Java的正則表達式的幫助 - 白色空間是殺害我
<p style="margin-top: 0">
</p>
,我想用<br />
更換。我有以下代碼:
string.replaceAll("<p([^>]*)></p>","<br/>");
我需要什麼,以取代只有那些空白段落標記>和<標籤之間放?也就是說,它們之間沒有字符或數字。
感謝
string.replaceAll("<p([^>]*)>\\s+?</p>","<br/>");
應處理大多數情況下。這是一個非貪婪的重複,至少需要一個空白字符。當然,使用HTML解析器會產生更一致的結果。
這也適用於需要,並且似乎更安全一些。謝謝。 – Samsquanch 2010-11-19 05:01:27
我不可能看到一個最小的vs最大的ASCII空白匹配會給你買什麼。另外,我的HTML頁面經常充滿'\ x85'和'\ xA0'字符。你知道,Javs的'\ s'實現已被破壞。 – tchrist 2010-11-19 05:03:54
「更安全」?我想我會去加入克蘇魯人羣。嘖! – tchrist 2010-11-19 05:04:56
使用此方法:
string.replaceAll("<p([^>]*)>\\s*</p>", "<br/>");
這是一個非常天真的正則表達式。你必須[更加小心](http://stackoverflow.com/questions/4044946/regex-to-split-html-tags/4045840#4045840),以保持正確的做法。 – tchrist 2010-11-19 04:53:13
謝謝。我嘗試過'\\ s',但沒有想到在*中加入。 – Samsquanch 2010-11-19 04:58:22
@ user485418:上次我查了,Java的'\ s'只對ASCII數據有用。希望這就是你得到的。 – tchrist 2010-11-19 05:00:34
這是ASCII數據還是UTF-8數據? – tchrist 2010-11-19 04:44:11
強制性引用http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2010-11-19 04:47:25
大衛鏈接到的摘要:不要在HTML/XML – 2010-11-19 04:52:23