1. 程式人生 > >025.1 正則表達式 常用功能

025.1 正則表達式 常用功能

常用功能 emp span 模式匹配 重復出現 常用 document all 步驟

內容:正則表達式是什麽?為什麽會有正則表達式?正則表達式常用功能

#####################正則表達式是什麽?

正則表達式是用於匹配想要的規則的字符串,如:

var str = "abc123def";
var patt1 = /[0-9]+/;
document.write(str.match(patt1));

patt1 就是一個 正則表達式,這裏是匹配數字,要匹配其他,當然要學規則

#####################為什麽會有正則表達式?

有匹配字符串的需求,比如上面例子,如果數字更長,我們又要取出,用代碼編寫就會比較復雜,如果使用正則,每次都是使用這個方法,熟悉後,編寫迅速,太多就不寫了,啰嗦

###############################################################################常用功能

###############規則

技術分享圖片

java 中要重復出現

###################Java正則常用功能

//####切割

private static void splitDemo()
{
    String temp = "awelafew##aewwoeif$$$$fewaigaxxxxoaigjwkqqqqqq";
    String regex = "(.)\\1+";   //重復數量大於1
String[] names = temp.split(regex); for(String name:names){ System.out.println(name); } }

與正則匹配的字符為:
##
ww
$$$$
xxxx
qqqqqq

調用結果:輸出

awelafew
ae
oeif
fewaiga
oaigjwk

這裏通過下面這個例子理解重復問題。

([0-9])\1{5} 或 ([\d])\1{5} 連續相同的6位數字 如:333333
([0-9a-zA-Z])\1{5} 連續相同的6位數字或字母 如:222222 cccccc ZZZZZZ
([\d])\1{2}([a-z])\2{2} 連續相同3位數字後根連續相同的三位小寫字母 如:222www
([\d])\1{2}([a-z])\2{2}|([a-z])\3{2}([\d])\4{2} 同上,但是能匹配數字+字母或字母+數字 如:222www 或 www222
這麽多的例子自己可以擴展,要註意的就是 \1 \2代表位置,從左到右遞增

所以上面的正則是可以改成(.)\\1{1,}

//####替換

{
    String num = "15722226666";
    num = num.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    //在方法多參數時,後面的參數可以通過  $編號 的形式取到前一個參數的組
    System.out.println(num);
}

調用結果:輸出

157****6666

//####獲取
實現獲取:將符合規則的內容提取出來
用正則表達式對象。java.util.regex.Pattern
1.將字符串規則封裝成Pattern對象。Pattern.compile(regex)
2.通過正則對象獲取匹配器對象。用對將正則規則作用到要操作的字符串上
3.通過匹配器對象的方法,對字符串進行操作
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

Matcher類
? matches 方法嘗試將整個輸入序列與該模式匹配。
? lookingAt 嘗試將輸入序列從頭開始與該模式匹配。
? find 方法掃描輸入序列以查找與該模式匹配的下一個子序列。

String
group() 返回由以前匹配操作所匹配的輸入子序列。

單詞邊界:\\b

步驟:
1、獲取Pattern類
2、Pattern類和Matcher關聯
3、匹配
4、獲取

private static void getDemo()
{
    String source = "aix awefawe wega aiq wea fwa gal aweflia";
    String regex = "\\b[a-zA-Z]{3}";                       // 開頭以字母開始,選取前面三個
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(source);
    while(m.find()){
        System.out.println(m.group());
    }
}

025.1 正則表達式 常用功能