[英]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]
意思是“字符a
, b
或c
”。 [^abc]
意思是“ 除 a
, b
或c
以外 a
任何字符”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.