2013-10-22 32 views
1

我有嘗試restString = restString.replaceAll("\\&lt;.*\\&gt;", "");在一個字符串刪除 「<」 和 「>」 之間的任何

restString = restString.replaceAll("\\&lt;[^(\\&gt)]*\\&gt;", "");

兩者似乎都不起作用。我不知道我是否可以在正則表達式中表達意義。

+1

嘗試只有一個斜槓,\ &lt; –

+0

@ Java中的X-Pippes創建\ literal我們需要把它寫成'「\\」',因爲它是String中的特殊字符,就像它在正則表達式中是特殊的。 – Pshemo

回答

1

讓你的正則表達式non-greedy

restString = restString.replaceAll("(?s)&lt;.*?&gt;", ""); 

而且我以前(?s)做點匹配換行符。

+0

謝謝anubhava!你的方法有效。我可以看到主要的區別是你使用DOTALL模式來進行點匹配換行。順便說一句,'&'不是轉義字符? –

+0

不客氣,很高興它解決了問題。沒有'&'不需要在正則表達式中轉義。 – anubhava

+0

如果你有'lorem ispum me>填充文本'這會抓住它嗎? – corsiKa

2

要使用正則表達式解決這個問題,你需要「東張西望」 - 使用回顧後和lookbefore:

restString = restString.replaceAll("(?<=&lt;).*(?=&gt;)", ""); 

環視表達式將通過正則表達式引擎進行評估,但他們不會比賽的一部分。 這種方式可以刪除BETWEEN & lt;和& gt;

如果它應該是nongreedy並能夠匹配多行,像anubhava使用表達式曾建議:

restString = restString.replaceAll("(?s)(?<=&lt;).*?(?=&gt;)", ""); 

要了解更多關於lookarounds,請訪問此頁:http://www.regular-expressions.info/lookaround.html

+0

感謝您的回答!我沒有說清楚,我還需要刪除'<'和'>'。 lookaround表達式絕對有用! –

相關問題