JAVA、C#中使用正則表示式替換字串
阿新 • • 發佈:2021-10-26
進來在專案中碰到一個字串替換問題,要替換的內容格式相對比較固定,裡面包含時間為變化值,想到了用正則表示式替換,一直學,一直不會寫,也是醉了
要調換掉的內容如下:
(折扣適用範圍:起始日期: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])[)]java 程式碼實現:"; Regex reg = new Regex(regexStr); if (!string.IsNullOrEmpty(note)) { string modifiedNote = reg.Replace(note, ""); return modifiedNote; } return note; }
import java.util.regex.Matcher; import java.util.regex.Pattern; privateString 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