1) 在某個範圍之內[ ]
1>直接將所有內容列出來
pattern pattern = pattern.compile("[asd]c");
matcher matcher = pattern.matcher("ac");
system.out.println(matcher.find());
matcher = pattern.matcher("gc");
system.out.println(matcher.find());
結果為:
true
false
2>如果內容有規律,可以使用「-」來表示範圍
pattern pattern = pattern.compile("[a-z]m");
matcher matcher = pattern.matcher("am");
system.out.println(matcher.find());
pattern = pattern.compile("[1-8]c");
matcher = pattern.matcher("3c");
system.out.println(matcher.find());
結果為:
true
true
2) 取不在某個範圍,即非,使用^
pattern pattern = pattern.compile("[^asd]c");
matcher matcher = pattern.matcher("gc");
system.out.println(matcher.find());
matcher = pattern.matcher("ac");
system.out.println(matcher.find());
結果為:
true
false
3)取在範圍1,或者範圍2,或者範圍3中,即或,直接不寫就是
pattern pattern = pattern.compile("[a-z1-5a-x]c");
matcher matcher = pattern.matcher("gc");
system.out.println(matcher.find());
matcher = pattern.matcher("3c");
system.out.println(matcher.find());
結果為:
true
true
注:還有另外一種寫法[a-z[1-5[a-z]]]c效果相同
4) 取交集,使用&&
string s1 = "ac";
string s2 = "cc";
system.out.println(s1.matches("[a-z&&[b-e]]c"));
system.out.println(s2.matches("[a-z&&[b-e]]c"));
結果為:
結果為:
true
true
1)作用:就是為了說明字元或者字串出現的次數
2)x? 匹配0次或1次(?表示是否,所以為0,1)
string str = "a";
system.out.println(str.matches("a?"));
結果為:true
3) x+ 匹配1次或多次(+表示正,所以為1或多次)
string str = "a";
system.out.println(str.matches("a+"));
結果為:true
4) x* 匹配0次或多次(*表示所有,所以幾次都行)
string str = "a";
system.out.println(str.matches("a*"));
結果為true
5) x 匹配n次
string str = "aaa";
system.out.println(str.matches("a"));
結果為true
6)x 匹配大於n次(聯想[n,],相當於從n到正無窮)
string str = "aaa";
system.out.println(str.matches("a"));
7)x 匹配大於n,小於m次(聯想[n,m])
string str = "aaa";
system.out.println(str.matches("a"));
8)注意:
1> [abc]+表示的是a一次或多次,或者b一次或多次,或者c一次或多次
string str = "a";
system.out.println(str.matches("[abc]+"));
2> abc+表示的是只針對c匹配一次或多次
string str = "abcc";
system.out.println(str.matches("abc+"));
結果為true
3>( abc)+表示的是針對整個abc匹配一次或多次
string str = "abcabc";
system.out.println(str.matches("(abc)+"));
結果為true
4>類似的,x,x,x也是如此匹配的
1)也就是有特殊意義的字元
2)所有元字元:(
[
]
)
?
*
+
.
3)將元字元改為普通意義的字元:前面加上\
^行首 $行尾
string str = "aaaa";
system.out.println(str.matches("^a$"));
結果為true
string str = " aaaa";
system.out.println(str.matches("^a$"));
結果為false
string str = "aaaa ";
system.out.println(str.matches("^a$"));
結果為false
從一大段字串中匹配需要的
string str = "345345abc23423456asd123";
pattern p=pattern.compile("[a-z]",pattern.case_insensitive);
matcher m = p.matcher(str);
while(m.find())
結果為:
abc
asd
正規表示式學習筆記
正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...
正規表示式學習筆記
字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
正規表示式學習筆記
1.正規表示式是可用於在乙個檔案或字元裡查詢和替代文字的一種標準。它具有兩種標準 基本的正規表示式 bre 擴充套件的正規表示式 ere ere包括bre功能和另外其它的概念。2.表示或運算 3.匹配任何單個字元 4.匹配任何中包含的單個字元,如 張王李 三,匹配張 三 王三,李三 5.將排除 後跟...