1. 程式人生 > 其它 >JAVA、C#中使用正則表示式替換字串

JAVA、C#中使用正則表示式替換字串

進來在專案中碰到一個字串替換問題,要替換的內容格式相對比較固定,裡面包含時間為變化值,想到了用正則表示式替換,一直學,一直不會寫,也是醉了


要調換掉的內容如下:

(折扣適用範圍:起始日期:20210101,終止日期:20211231)
(折扣適用範圍:起始日期:20200101,終止日期:2020.12.31)

主要是這兩種組合,可能是獨立段落,也可能是巢狀在語句中 c#程式碼實現:
public string ReplaceNote(string note)
        {
            string regexStr = "([(]折扣適用範圍:起始日期:)([0-9][0-9][0-9][0-9])(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]),終止日期:([0-9][0-9][0-9][0-9])(\\.?)(0[1-9]|1[012])(\\.?)(0[1-9]|[12][0-9]|3[01])[)]
"; Regex reg = new Regex(regexStr); if (!string.IsNullOrEmpty(note)) { string modifiedNote = reg.Replace(note, ""); return modifiedNote; } return note; }
java 程式碼實現:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
private
String ReplaceNote(String note){ String pattern = "([(]折扣適用範圍:起始日期:)([0-9][0-9][0-9][0-9])(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]),終止日期:([0-9][0-9][0-9][0-9])(\\.?)(0[1-9]|1[012])(\\.?)(0[1-9]|[12][0-9]|3[01])[)]"; Pattern r = Pattern.compile(pattern); Matcher matcher = r.matcher(note);
while(matcher.find()){ String reeStr=matcher.replaceAll(""); return reeStr; } return note; }

正則表示式說明:

//匹配 20201212 
([0-9][0-9][0-9][0-9])(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])  
//匹配 2020.12.12
([0-9][0-9][0-9][0-9])(\\.?)(0[1-9]|1[012])(\\.?)(0[1-9]|[12][0-9]|3[01])
最後分享一個正則圖形化工具:regexper.com