簡體   English   中英

如何在Java中替換字符串(正則表達式?)

[英]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,", ""));

輸出:

   완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다     완성한, 숙달한, 소양(교양)이 있는 

更新2:

根據您剛發布的預期輸出,您還希望刪除重復的空格。 為此,請使用此正則表達式:

(<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM