1. 程式人生 > >關於java正則表示式中的 ^和$的使用

關於java正則表示式中的 ^和$的使用

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>