Java中的正則表示式以及例項
阿新 • • 發佈:2018-11-11
1、 字元
a) x字元x。如‘a’代表字元a
b) \ \反斜線字元用\\代表一個\
c) \n換行符(‘\u000A’)
d) \r回車符(‘\u000D’)
2、 字元類
a) [abc] a、b或c(簡單類)
b) [^abc]除了a、b、c的任何字元
c) [a-zA-Z]a到z或A到Z,兩頭字母包括在內
d) [0-9] 0到9的字元都包括
i. qq.matches([1-9][0-9]{4,14})代表的是第一位是取1到9,後面緊跟的至少4位最多14位取值是0到9,最終資料是5-15位
ii. 也可以寫作qq.matches([1-9]{1}[0-9]{4,14})
3、 預定義字元類
a) . 表示任何字元。如果想表示 . 可以用 \. 來表示
b) \d表示數字[0-9] 這裡需要注意的是此處的\需要用\\來代替。
c) \w單詞字元:[a-zA-Z_0-9]
i. 在正則表示式裡面組成單詞的東西必須由這些東西組成
4、 邊界匹配器
a) ^行的開頭
b) $行的結尾
c) \b單詞邊界:只要不是單詞字元就都是單詞邊界
5、 數量詞
a) X? X一次或一次也沒有
b) X* X零次或多次
c) X+ X一次或多次
d) X{n} X恰好n次
e) X{n,} X至少n次
f) X{n,m} X至少n次,但不超過m次
6、 正則表示式的應用
a) public boolean matches(String regex)判斷功能
i. 位於String類中告知此字串是否匹配給定的正則表示式
b) public String [] split (String regex)分割功能
i. String類,根據正則表示式來匹配拆分字串。
ii. 18-24如果想進行拆分兩個數字18和24
iii. String s=”18-24”
iv. String regex=”-”
v. String []array=s.split(regex)
vi. a=Integer.parseInt(array[0]) //18
vii. b=Integer.parseInt(array[1])//24
c) public String replaceAll(String regex,String replacement)替換功能
i. Stirng類
ii. String s=”hel123lowo456rld”;//去除字串中的數字,變為*
iii. String regex=”\d+”;
iv. String ss=” * ”
v. String result =s.replaceAll(regex,ss);//輸出結果為hel* lowo* rld
vi. 如果想把字串中每個數字都變為* 則需要修改String regex=”\d+”;將其修改為String regex=”\d”。
d) 獲取功能需要使用Pattern和Matcher類(在下面例項中給出程式碼)
i. 也可用於判斷功能(但是不如上面的a方法進行判斷簡單)
ii. Pattern p=pattern.compile(“a*b”)//將正則表示式編譯成模式物件,a出現零次或多次,b出現一次。
iii. Matcher m=p.matcher(“aaaab”)//通過模式物件得到匹配物件aaaab為匹配字串
iv. boolean b=m.matches()//b輸出結果為true
正則表示式的獲取功能例項
package test08_zhengdingbiaodashi;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//功能實現獲取字串s中的長度為5的獨立字元
public class Research {
public static void main(String[] args) {
//字串
String s="hello world zfliu 1996 20181025 ";
//正定表示式規則,因為是獨立字串此處必須要加上字元\\d以獲取字元邊界
String regex= "\\b\\w{5}\\b";
//把規則編譯成模式物件
Pattern p=Pattern.compile(regex);
//通過模式物件得到匹配器物件
Matcher m=p.matcher(s);
//呼叫匹配器功能
//建立匹配物件後可以進行三個不同的操作,每個操作都會返回以一個boolean值
//1、public boolean matches()方法嘗試將整個輸入序列與該模式匹配
//2、public boolean lookingAt()嘗試將輸入序列從頭開始與該模式匹配,只從頭開始進行一次成功匹配
//3、public boolean find()方法掃描輸入序列以查詢與該模式匹配的下一個子序列,從頭開始可以進行多次成功匹配
//注意每次必須呼叫find方法之後再呼叫group方法得到匹配的字元
///public String group();
while(m.find()) {
String s1=m.group();
System.out.println(s1);
}
}
}