簡體   English   中英

replaceAll產生意外結果

[英]replaceAll gives unexpected result

import java.io.*;

public class test
{
   public static void main(String args[])
   {
      String Str = new String("This is some text");
      System.out.println(Str.replaceAll("[^A-Za-z0-9]", "."));
   }
}

它產生This.is.some.text 如果我刪除^ ,它將產生我想要的東西: .... .. .... .... 什么符號^在這里改變? ^表示這是開始,但我仍然不明白為什么它產生的結果與沒有它的代碼會產生不同的結果。 我想念什么?

^在正則表達式中有兩種不同的含義。 如果它位於正則表達式的開頭(例如^[az]+$ ),則表示一行的開頭。 但是,如果它位於字符類規范的開頭(例如[^az]+ ),則表示取反。

[^A-Za-z0-9]表示除'A' to 'Z''a' to 'z''0' to '9'以外'A' to 'Z'任何字符

在此處輸入圖片說明

[A-Za-z0-9]表示'A' to 'Z''a' to 'z''0' to '9'任何字符
在此處輸入圖片說明

^用於否定 字符類的內容。

  • [abc]意思是“字符abc ”。
  • [^abc]意思是“ abc 以外 a任何字符”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM