作用:字符串匹配、字符串查找、字符串替換;
類:java.lang.String、java.util,regex.Pattern、java.util.regex.Matcher;
● 簡單認識:
p("abc".matches("..."));//true
p("a232333a".replaceAll("//d", "-"));//將數字替換成“-”
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("fgh");
p(m.matches());
p("fgh".matches("[a-z]{3}"));//等價於上面三句。區別在於上面三句已經編
//譯好了,因此執行起來會更快。
public static void p(Object obj) {
System.out.println(obj);
}
打印結果:
true
a------a
true
true
● 進一步認識:
p("a".matches("."));
p("aa".matches("aa"));
p("aaaa".matches("a*"));
p("".matches("a*")); //X* X, zero or more times
p("aaaa".matches("a+")); //X+ X, one or more times
p("".matches("a+"));
p("aaaa".matches("a?")); // X? X, once or not at all
p("".matches("a?"));
p("a".matches("a?"));
p("214523123123456".matches("//d{3,100}")); p("192.168.0.aaa".matches("//d{1,3}//.//d{1,3}//.//d{1,3}//.// d{1,3}")); //false
p("192".matches("[0-2][0-9][0-9]"));//true
/*Greedy quantifiers
X{n} X, exactly n times
X{n,} X, at least n times
X{n,m} X, at least n but not more than m times */
● 範圍:(只匹配一個字符)
p("a".matches("[abc]"));
p("a".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-z[A-Z]]"));
p("A".matches("[a-z]|[A-Z]"));
p("R".matches("[A-Z&&[RFG]]"));
● 將一個四則表達式按照非數字作爲界限分開:
public class TestExpression {
public static void main(String[] args) {
String str = "1111+22*23-3+27/3=";
//String[] sSplitNum = str.split("[^1234567890]");
//String[] sSplitNum = str.split("[^//d]");
//String[] sSplitNum = str.split("[^0-9]");
String[] sSplitNum = str.split("//D");
for(int i=0; i<sSplitNum.length; i++) {
System.out.println(sSplitNum[i]);
}
}
}
注:這裏還要順便注意下split這個函數,如果是要以一個字符分開給定的字符串,如字符串“127.0.0.1“要以“.“分開,那麼就必須寫成”//.”,即:
String IP = “127.0.0.1”;
String[] ipStr = IP.split(“//.”);
● 運用正則表達式匹配一個反斜槓“/“:
System.out.println("//".matches("////"));
● 測試一個字符串是不是隻含有數字:
p("123323421".matches("[0-9]+"));
p("2323423".matches("//d+"));
p("1212".matches("[//d]+"));
結果都爲true;
JavaScript中的“正則表達式“
與Java的正則表達式規則相類似,只要在匹配的模式前後加上”/”即可。如:
判斷一個變量是不是一個實數:
var str = /^/d+(./d+)?$/;
str.test(string); //string爲要匹配的字符串
其中,”^” 表示行的開頭;”$”表示行的結尾;是不是一個整數:/^/d+$/
故其格式爲:/^(匹配的模式)$/