java正則引號
A. java中非中文的正則表達式是什麼
非中文 [^\u4e00-\u9fa5]
中文的正則表達式是[\u4e00-\u9fa5]
其他正則表達式
字元類
[abc] a、b 或 c(簡單類)
[^abc] 任何字元,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(范圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
以上在java中使用時用雙引號將它們括起來就可以了
預定義字元類
. 任何字元(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9] (單個數字)
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
以上在java中使用時除了將它們用雙引號括起來以為,還須加\轉義,例如\d的實際用法是」\\d「
POSIX 字元類(僅 US-ASCII)
\p{Lower} 小寫字母字元:[a-z]
\p{Upper} 大寫字母字元:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字元:[\p{Lower}\p{Upper}]
\p{Digit} 十進制數字:[0-9]
\p{Alnum} 字母數字字元:[\p{Alpha}\p{Digit}]
\p{Punct} 標點符號:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可見字元:[\p{Alnum}\p{Punct}]
\p{Print} 可列印字元:[\p{Graph}\x20]
\p{Blank} 空格或製表符:[ \t]
\p{Cntrl} 控制字元:[\x00-\x1F\x7F]
\p{XDigit} 十六進制數字:[0-9a-fA-F]
\p{Space} 空白字元:[ \t\n\x0B\f\r]
以上字元串要加雙引號和反斜杠號Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
用法也是將它們用雙引號括起來
Logical 運算符
XY X 後跟 Y
X|Y X 或 Y
(X) X,作為捕獲組
用法也是將它們用雙引號括起來
注意:正則表達式則有在方法參數明確是以正則表達式為參考時才使用,否則如果方法參數是普通字元序列時是不起作用的。
(引自網路和書籍)
B. java中*的用法
你說的是正則表達式里的*號,正則表達式本身是一個字元串,而字元串用雙引號""表示。
C. 在正則表達式中\\.和.有什麼區別
一、作為Java的轉義字元
1.在Java中,反斜杠(\)是一個特殊的字元,被稱為轉義字元,它的作用是用來轉義後面一個字元。轉義後的字元通常用於表示一個不可見的字元或具有特殊含義的字元,例如換行(\n)、回車符(\r)、製表符(\t)。
2.在Java中以下字元都有特殊意義,無法直接表示
單引號:char c = 'a'; 表示字元類型的數據時需要使用單引號將字元左右括起來。所以要表示字元'則需要使用\'
雙引號:String str = "abc"; 表示字元串類型的數據時需要使用雙引號將字元串左右括起來。要表示字元串"則需要\"
反斜杠:String regex = "你好\n\t阿"; 在Java代碼中\表示轉義字元,所以如果要表示字面意思的\,則需要使用\\
所以用反斜杠加上本身字元來進行表示。
二、在正則表達式中
2.1Java中正則表達式的\
\表示將下一字元標記為特殊字元。如\d表示數字字元匹配,等效於 [0-9]。\w表示匹配任何字類字元(字母數字下劃線),注意包括下劃線。與"[A-Za-z0-9_]"等效。
在其他語言中,\\ 表示:我想要在正則表達式中插入一個普通的(字面上的)反斜杠,請不要給它任何特殊的意義。
在 Java 中,\\ 表示:我要插入一個正則表達式的反斜線,所以其後的字元具有特殊的意義。
在 Java 中,\\ 表示:我要插入一個正則表達式的反斜線,所以其後的字元具有特殊的意義。
在 Java 中,\\ 表示:我要插入一個正則表達式的反斜線,所以其後的字元具有特殊的意義。
\\中的第一個\表示java的轉義字元\由編譯器解析,第二個\是正則表達式\由正則表達式引擎解析。
所以,在其他的語言中(如Perl),一個反斜杠 \ 就足以具有轉義的作用,而在 Java 中正則表達式中則需要有兩個反斜杠才能被解析為其他語言中的轉義作用。也可以簡單的理解在 Java 的正則表達式中,兩個 \\ 代表其他語言中的一個 \,這也就是為什麼表示一位數字的正則表達式是 \\d,而表示一個普通的反斜杠是 \\\\。
所以Java正則表達式中匹配一個普通的反斜杠是\\\\。
所以如果在[]內表示一個],要寫兩個\,即[\\]]。
例如,我要在前面不是0-9,也不是) ] }三個反括弧的後面位置中,匹配 - 的後面是數字或者正括弧( [ { 的 - 前面的位置,須寫成:
(?<![0-9)}\\]])(?=-[0-9({\\[]) 。
若在該位置加0,可寫成String s = str.replaceAll("(?<![0-9)}\\]])(?=-[0-9({\\[]) ","0");
2.2說明:
字元 說明
^ 匹配輸入字元串開始的位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 還會與"\n"或"\r"之後的位置匹配。
$ 匹配輸入字元串結尾的位置。如果設置了 RegExp 對象的 Multiline 屬性,$ 還會與"\n"或"\r"之前的位置匹配。
* 零次或多次匹配前面的字元或子表達式。例如,zo* 匹配"z"和"zoo"。* 等效於 {0,}。
+ 一次或多次匹配前面的字元或子表達式。例如,"zo+"與"zo"和"zoo"匹配,但與"z"不匹配。+ 等效於 {1,}。
? 零次或一次匹配前面的字元或子表達式。例如,"do(es)?「匹配"do"或"does"中的"do」。? 等效於 {0,1}。
{n} n 是非負整數。正好匹配 n 次。例如,"o{2}"與"Bob"中的"o"不匹配,但與"food"中的兩個"o"匹配。
{n,} n 是非負整數。至少匹配 n 次。例如,"o{2,}「不匹配"Bob"中的"o」,而匹配"foooood"中的所有 o。"o{1,}「等效於"o+」。"o{0,}「等效於"o*」。
{n,m} m 和 n 是非負整數,其中 n <= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的頭三個 o。『o{0,1}』 等效於 『o?』。注意:您不能將空格插入逗號和數字之間。
x y
[xyz] 字元集。匹配包含的任一字元。例如,"[abc]「匹配"plain"中的"a」。
[ ^xyz] 反向字元集。匹配未包含的任何字元。例如,"[^abc]「匹配"plain"中"p」,「l」,「i」,「n」。
[a-z] 字元范圍。匹配指定范圍內的任何字元。例如,"[a-z]"匹配"a"到"z"范圍內的任何小寫字母。
\d 數字字元匹配。等效於 [0-9]。
\D 非數字字元匹配。等效於 [ ^0-9]。
\w 匹配任何字類字元,包括下劃線。與"[A-Za-z0-9_]"等效。
\W 與任何非單詞字元匹配。與"[ ^A-Za-z0-9_]"等效。
2.3Java正則表達式的使用方法
使用正則表達式需要引入 java.util.regex 包,我們就從這里入手講解:
java.util.regex
java.util.regex 包主要包括以下三個類:
Pattern 類:
pattern 對象是一個正則表達式的編譯表示。Pattern 類沒有公共構造方法。要創建一個 Pattern 對象,你必須首先調用其公共靜態編譯方法,它返回一個 Pattern 對象。該方法接受一個正則表達式作為它的第一個參數。
Matcher 類:
Matcher 對象是對輸入字元串進行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構造方法。你需要調用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。
matches方法
PatternSyntaxException:
PatternSyntaxException 是一個非強制異常類,它表示一個正則表達式模式中的語法錯誤
D. Java中如何使用正則匹配一對中括弧中的引號冒號(":),目的是在冒號後加個空格
我覺得樓上那位說把中括弧里的取出來處理了再弄回去可行啊,把原字元串一分為三,把中間處理了再組合起來,但是我寫的這個很low只能處理一次中括弧:
E. 正則表達式如何寫(替換雙引號裡面的逗號):
正則表達式 (".*?),(.*?") 替換成 $1@$2
我給你一個Java語言的例子,你看看吧.
publicclassAA{
publicstaticvoidmain(String[]args){
Strings="abc,"sdfs,dfs",dfds,"dfsx,sdfasd"";
Stringregex="(".*?),(.*?")";
System.out.println(s.replaceAll(regex,"$1@$2"));
}
}
運行結果
abc,"sdfs@dfs",dfds,"dfsx@sdfasd"
F. 關於JAVA正則表達式里的\
1.41(16進制)是A字元的ascii碼
2.JAVA字元串是用""括起來的,字元串中例如內容有雙引號",這樣寫"""是有錯的,就需要用\轉義字元將"表示為一個普通字元,則寫為"\""。