關於java正則表示式中的 ^和$的使用
阿新 • • 發佈:2018-12-11
java正則表示式的邊界匹配符中,有兩個比較常用的字元:“ ^ ”和“ $ ”,這兩個字元理解起來比較容易混淆。先說下這兩個字元的含義: “ ^ ”:匹配輸入字串開始的位置。如果設定了 RegExp 物件的 Multiline 屬性,^ 還會與”\n”或”\r”之後的位置匹配(即匹配每一行的開始);
“ $ ” :匹配輸入字串結尾的位置。如果設定了 RegExp 物件的 Multiline 屬性,$ 還會與”\n”或”\r”之前的位置匹配(即匹配每一行的結束)。
那很多初學的朋友,不理解這兩個字元的用法,“^aa+$”和“aa+”在進行匹配的時候貌似沒區別。我們結合程式碼來看,就容易理解了。 我們來看程式碼的最後一部分。 字串a和b,字串和匹配的正則表示式基本相同,只是b中有“^”字元。那我們看輸出的字串結果,不難發現,a中,將兩個數字的部分,均替換成了“Z”,而b中只是將開頭的兩個數字替換成了“Z”,因為“^”的要求是從開始進行匹配。這樣中間的兩個數字就匹配不到了,也就沒有替換。而沒有“^”的a來說,只要滿足是兩個數字的情況,就可以進行匹配和替換,不會區分是否是從字串的開始進行匹配。同理,“$”判定是從最後面開始匹配,可結合c和d的結果,類比理解。 值得一提的一點是,不管是帶有“ ^”和 ” \$” 的正則表示式,在進行matches方法匹配的時候,均返回false。因為matches()匹配的是整個字串,而不是某一部分,很明顯文中使用的正則表示式並不能完全匹配輸入的字串,所以返回值均為false。
public class RegexDemo {
public static void main(String[] args) {
//匹配郵箱
String regex="^[email protected]+(\\..+){1,}$";
String str="[email protected]";
// System.out.println(str.matches(regex));
//匹配固定電話 4位區號-7位號碼 或者 3位區號-8位號碼
String regex2="^\\d{4}-\\d{7}|\\d{3}-\\d{8}$" ;
String str2="020-13222113";
String str3="0532-9989211";
// System.out.println(str2.matches(regex2));
// System.out.println(str3.matches(regex2));
//匹配除了a和9之外的數字或字元
String regex3="^[^9a]{1,}$";
String str4="1234fsfse";
String str5="a2343";
// System.out.println(str4.matches(regex3));
// System.out.println(str5.matches(regex3));
//^和$的用法
String a = "3131sasfasd".replaceAll("\\d{2}", "Z");
String b = "3131sasfasd".replaceAll("^\\d{2}", "Z");//僅替換字串開頭的兩個數字
String c = "3131sdasfasd".replaceAll("sd", "Z");
String d = "3131sdsfasd".replaceAll("sd$", "Z");//僅替換字串開頭的兩個數字
System.out.println(a);//ZZZsasfasd
System.out.println(b);//Z3131sasfasd
System.out.println(c);//aa3131ZasfaZ
System.out.println(d);//aa3131sdsfaZ
String str6 = "aa3131sasfasd";
System.out.println(str6.matches("\\d{2}")); //false
System.out.println(str6.matches("^\\d{2}"));//false
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-8cccb36679.css" rel="stylesheet">
</div>
</article>