replaceAll给出意想不到的结果

goo*_*ing 0 java regex

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]", "."));
   }
}
Run Code Online (Sandbox Code Playgroud)

它产生This.is.some.text.如果我删除^,它产生我想要的东西:.... .. .... .....^这里有什么符号变化?^意味着它是开始,但我仍然不明白为什么它产生的结果不同于没有它的代码.我错过了什么?

buc*_*buc 5

^在正则表达式中有两个不同的含义.如果它位于正则表达式的开头(例如^[a-z]+$),则表示行的开头.但如果它位于字符类规范的开头(例如[^a-z]+),则意味着否定.