簡體   English   中英

有條件地將字符添加到正則表達式匹配

[英]Adding characters conditionally to a regular expression match

我在Eclipse中使用正則表達式,並想知道是否有一種方法可以根據匹配添加字符。

我正在使用這些表達式來匹配和替換:

Match: ^(\s*)(//)?(.*?)"([\p{Punct}\p{Space}]*)?(\p{Alnum}.*?\p{Alnum})([\p{Punct}\p{Space}]*)?"(.*?)$
Replace: $1$3"$4" \+ i18n.tr\("$5"\) \+ "$6"$7

例如

System.err.println("Unexpected number of guests: ");

我試圖用這個替換它

System.err.println(i18n.tr("Unexpected number of guests") + ": ");

但我得到了

System.err.println("" + i18n.tr("Unexpected number of guests") + ": ");

如果沒有捕獲任何東西,有沒有辦法擺脫“+ +前面的i18n.tr(。*)?

你不能通過一次搜索替換來做到這一點!

唯一的方法是使用兩個搜索替換:

  • 第一個帶有空格

Match: ^(\\s*)(//)?(.*?)"([\\p{Punct}\\p{Space}]++)(\\p{Alnum}.*?\\p{Alnum})([\\p{Punct}\\p{Space}]*)?"(.*?)$

Replace: $1$3"$4" \\+ i18n.tr\\("$5"\\) \\+ "$6"$7

  • 第二個沒有穿孔空間

Match: ^(\\s*)(//)?(.*?)"(\\p{Alnum}.*?\\p{Alnum})([\\p{Punct}\\p{Space}]*)?"(.*?)$

Replace: $1$3i18n.tr\\("$4"\\) \\+ "$5"$6

不要忘記在任何嘗試之前進行備份

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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