❶ java正則 /\t/ new RegExp("\\t") 為什麼要雙轉義
因為java的正則表達式在是字元串里的,\是java字元串中的轉義符。\也是正則表達式中的轉義符。那麼只加一個\的話,只能說明在字元串中轉義符,而java需要進一步把普通字元串中的\變成正則表達式中的\,像是更深一則轉化的意思,這樣\\以後的意思是正則表達式中的轉義符(\)。
要把\把變成正則表達式中的\,所以\\是轉義了一個\
我的回答簡而言之,在java中(別的語言有別的規矩),正則表達式字元串,和普通字串是兩個東西。
❷ 請教java正則表達式的轉義字元問題
1 /**
2 * 轉義正則特殊字元 ($()*+.[]?\^{}
3 * \\需要第一個替換,否則replace方法替換時會有邏輯bug
4 */
5 public static String makeQueryStringAllRegExp(String str) {
6 if(StringUtils.isBlank(str)){
7 return str;
8 }
9
10 return str.replace("\\", "\\\\").replace("*", "\\*")
11 .replace("+", "\\+").replace("|", "\\|")
12 .replace("{", "\\{").replace("}", "\\}")
13 .replace("(", "\\(").replace(")", "\\)")
14 .replace("^", "\\^").replace("$", "\\$")
15 .replace("[", "\\[").replace("]", "\\]")
16 .replace("?", "\\?").replace(",", "\\,")
17 .replace(".", "\\.").replace("&", "\\&");
❸ JAVA中正則雙斜線和單斜線轉義的問題
在java裡面反斜桿是轉義的意思,在正則表達式裡面反斜桿也是轉義的意思。java裡面2個反斜桿,實際輸出的是一個反斜桿。你那個正則表達式實際的驗證規則是 \[(.*)\] ".*"。由於[]中括弧是正則表達式裡面的關鍵字,所以要轉義。所以你最終匹配的樣式是[(.*)] ".*"這個樣子的。
❹ JAVA中的正則表達式「\\[([^\\]]+)\\]」這個表示什麼意思兩個轉義字元是為了表達什麼
在正則中括弧表示字元集,要表示中括弧字元必須轉義
整個正則匹配 中括弧中的內容
開頭的\\[ 匹配" [ "字元
尾部的\\]匹配 「]"字元
中間的[([^\\]]+),表示所有非"]"字元組成的字元串