[英]How to replace strings in Java (Regex?)
您好,首先感謝您的幫助。
我需要對Java中的大量字符串執行一些數據操作。
這是我必須修改的字符串類型的示例:
<span foreground="blue" weight="bold">accomplish</span> vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 <span foreground="blue" weight="bold">accomplish</span> a, prep, 완성한, 숙달한, 소양(교양)이 있는
我需要做什么:
從上述字符串中刪除所有
<span..../span>
我需要取出:
a, vt, vi, prep等。
不帶走所有字符,而是帶走特定的a, vt, vi, prep和其他一些字符。
編輯預期編輯因此預期的輸出將是:
완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는
我想我必須使用Regex,但是我絕對不是這個問題的新手。
請有人能幫我些忙嗎?
謝謝
將String#replaceAll()
與正則表達式一起使用:
<span.*?/span>
.replaceAll()
采用正則表達式作為第一個參數,而.replace()
采用String
(通常為CharSequence
)。
Java代碼:
String s = "<span foreground=\"blue\" weight=\"bold\">accomplish</span> vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 <span foreground=\"blue\" weight=\"bold\">accomplish</span> a, prep, 완성한, 숙달한, 소양(교양)이 있는 ";
System.out.println(s.replaceAll("<span.*?/span>", ""));
輸出:
vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 a, prep, 완성한, 숙달한, 소양(교양)이 있는
如果需要更多內容,可以使用|
將它們放入正則表達式中|
運營商。 例如:
<span.*?/span>|a,|vt,|vi,|prep,|whateverYouWantDontForgetToEscape
工作代碼:
System.out.println(s.replaceAll("<span.*?/span>|a,|vt,|vi,|prep,", ""));
輸出:
완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는
根據您剛發布的預期輸出,您還希望刪除重復的空格。 為此,請使用此正則表達式:
(<span.*?/span>|a,|vt,|vi,|prep,)(\s(?<=\s))*
Java代碼:
System.out.println(s.replaceAll("(<span.*?/span>|a,|vt,|vi,|prep,)(\\s(?<=\\s))*", ""));
輸出:
완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.