[英]Java Regex Doesn't Work For Characters As Like \n
我想刪除所有以{{
開頭,以}}
結尾的字符,我已經編寫了該正則表達式:
String templatePattern = "\\{\\{.*?\\}\\}";
我用它:
text.replaceAll(templatePattern, "");
它可以工作,但是對於像這樣的字符串:
{{Apple \n banana }}
它不起作用。 如果我將所有\\n
字符替換為空格字符,它將起作用。 什么是正確的解決方案? 因為我也應該對\\t
和其他人應用相同的內容。
原因是, dot
匹配\\n
任何內容。 如果要匹配所有內容,則可以使用[\\s\\S]
或[\\w\\W]
或補充元字符的任何此類變體:
String templatePattern = "\\{\\{[\s\S]*?\\}\\}";
另一種方法是通過使用(?s)
標志使dot
實際上與換行符匹配:
String templatePattern = "(?s)\\{\\{.*?\\}\\}";
后一種確實是更好的方法。 (?s)
與Pattern.DOTALL
相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.