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
。如果我删除了^
,那就生成我想要的内容:.... .. .... ....
。符号^
在此处发生了什么变化? ^
意味着它是开始,但我仍然不明白为什么它产生的结果不同于没有它的代码。我错过了什么?
答案 0 :(得分:5)
^
在正则表达式中有两种不同的含义。如果它位于正则表达式的开头(例如^[a-z]+$
),则表示行的开头。但如果它位于字符类规范的开头(例如[^a-z]+
),则意味着否定。
答案 1 :(得分:2)
[^A-Za-z0-9]
表示除'A' to 'Z'
,'a' to 'z'
和'0' to '9'
以外的任何字符
[A-Za-z0-9]
表示'A' to 'Z'
,'a' to 'z'
和'0' to '9'
的任何字符。
答案 2 :(得分:1)
^
用于否定 character class的内容。
[abc]
表示“其中一个字符a
,b
或c
”。[^abc]
表示“除 a
,b
或c
以外的任何字符。”