1. 程式人生 > >java用正則表示式匹配或替換反斜槓(\)的問題

java用正則表示式匹配或替換反斜槓(\)的問題

在正則表示式中,\  表示轉義符不能單獨存在。  要表示字元‘\’ ,就應該寫\\ 。 意思是前一個轉義符\,轉義了後面一個\

而在java中\也是轉義符,同上,也應該用\\

匹配:

  1. publicclass FanXieGang { 
  2.     publicstaticvoid main(String[] args) { 
  3.         String str1 = "\\"
  4.         System.out.println("str1:" + str1); 
  5.         String str2 = "\\"
  6.         System.out.println("str2:" + str2); 
  7.         Pattern pattern = Pattern.compile(str1 + str1); 
  8.         Matcher matcher = pattern.matcher(str2 + "abcdefg"); 
  9.         while (matcher.find()){//查詢符合pattern的字串  
  10.         System.out.println("查詢到的:" + matcher.group()); 
  11.         }    
  12.     } 
  13. }

替換:

java反斜槓 和 string.replaceAll要替換反斜槓

java replaceAll() 方法要用 4 個反斜槓,表示一個反斜槓 例如 str1="aa\bbb"; str2="aa'bbb"; 要想替換成 str1="aa\\bbb";str2="aa\'bbb"; 必須這樣替換: str1 = str1.replaceAll("\\\\", "\\\\\\\\"); str2 = str2.replaceAll("'",\\\\'
); 原因如下: String 的 replaceAll() 方法,實際是採用正則表示式的規則去匹配的, \\\\ ,java解析為\\交給正則表示式, 正則表示式再經過一次轉換,把\\轉換成為\ 也就是java裡面要用正則來表示一個\. 必須寫成4個\ 如果要表示\\,那就要寫8個\ 所以如果寫成: str1 = str1.replaceAll("\\", "\\\\"); 就會報正則表示式的錯誤。