欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
我愛(ài)學(xué)Java之Pattern和Matcher用法

Java正則表達式通過(guò)java.util.regex包下的Pattern和Matcher類(lèi)實(shí)現

Pattern類(lèi)用于創(chuàng )建一個(gè)正則表達式,也可以說(shuō)是創(chuàng )建一個(gè)匹配模式,可以通過(guò)兩個(gè)靜態(tài)方法創(chuàng )建:compile(String regex)和compile(String regex,int flags),其中regex是正則表達式,flags為可選模式(如:Pattern.CASE_INSENSITIVE 忽略大小寫(xiě))

實(shí)例:

Pattern pattern = Pattern.compile("Java");System.out.println(pattern.pattern());//返回此模式的正則表達式即Java
  • 1
  • 2

Pattern類(lèi)還有兩個(gè)根據匹配模式拆分輸入序列的方法:split(CharSequence input) 和split(CharSequence input, int limit),其中limit為返回元素的個(gè)數。

實(shí)例:

Pattern pattern = Pattern.compile("Java");String test="123Java456Java789Java";String[] result = pattern.split(test);for(String s : result)    System.out.println(s);
  • 1
  • 2
  • 3
  • 4
  • 5

結果:

在細說(shuō)一下split(CharSequence input, int limit),當limit值大于所能返回的字符串的最多個(gè)數或者為負數,返回的字符串個(gè)數將不受限制,但結尾可能包含空串,而當limit=0時(shí)與split(CharSequence input)等價(jià),但結尾的空串會(huì )被丟棄。

Pattern pattern = Pattern.compile("Java");String test = "123Java456Java789Java";String[] result = pattern.split(test,2);for(String s : result)            System.out.println(s);result = pattern.split(test,10);System.out.println(result.length);result = pattern.split(test,-2);System.out.println(result.length);result = pattern.split(test,0);System.out.println(result.length);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

運行結果:

Pattern類(lèi)也自帶一個(gè)靜態(tài)匹配方法matches(String regex, CharSequence input),但只能進(jìn)行全字符串匹配并且只能返回是否匹配上的boolean值

實(shí)例:

String test1 = "Java";String test2 = "Java123456";System.out.println(Pattern.matches("Java",test1));//返回trueSystem.out.println(Pattern.matches("Java",test2));//返回false
  • 1
  • 2
  • 3
  • 4
  • 5

最后就要過(guò)渡到Matcher類(lèi)了,Pattern類(lèi)中的matcher(CharSequence input)會(huì )返回一個(gè)Matcher對象。

Matcher類(lèi)提供了對正則表達式的分組支持,以及對正則表達式的多次匹配支持,要想得到更豐富的正則匹配操作,那就需要將Pattern與Matcher聯(lián)合使用。

實(shí)例:

Pattern pattern = Pattern.compile("Java");String test = "123Java456Java789Java";Matcher matcher = pattern.matcher();
  • 1
  • 2
  • 3

Matcher類(lèi)提供了三個(gè)返回boolean值得匹配方法:matches(),lookingAt(),find(),find(int start),其中matches()用于全字符串匹配,lookingAt從字符串最開(kāi)頭開(kāi)始匹配滿(mǎn)足的子串,find可以對任意位置字符串匹配,其中start為起始查找索引值。

實(shí)例

Pattern pattern = Pattern.compile("Java");String test1 = "Java";String test2 = "Java1234";String test3 = "1234Java"Matcher matcher = pattern.matcher(test1);System.out.println(matcher.matches());//返回truematcher = pattern.matcher(test2);System.out.println(matcher.matches());//返回falsematcher = pattern.matcher(test2);System.out.println(matcher.lookingAt())://返回truematcher = pattern.matcher(test3);System.out.println(matcher.lookingAt());//返回falsematcher = pattern.matcher(test1);System.out.println(matcher.find());//返回truematcher = pattern.matcher(test2);System.out.println(matcher.find());//返回truematcher = pattern.matcher(test3);System.out.println(matcher.find(2));//返回truematcher = pattern.matcher(test3);System.out.println(matcher.find(5));//返回false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

這里介紹下組的概念:組是用括號劃分的正則表達式,可以根據組的編號來(lái)引用這個(gè)組。組號為0表示整個(gè)表達式,組號為1表示被第一對括號括起的組,依次類(lèi)推,例如A(B(C))D,組0是ABCD,組1是BC,組2是C。

Matcher類(lèi)提供了start(),end(),group()分別用于返回字符串的起始索引,結束索引,以及匹配到到的字符串。

實(shí)例:

Pattern pattern = Pattern.compile("Java");String test = "123Java456";Matcher matcher = pattern.matcher(test);matcher.find();System.out.println(matcher.start());//返回3System.out.println(matcher.end());//返回7System.out.println(matcher.group());//返回Java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Matcher類(lèi)提供了start(int gropu),end(int group),group(int i),groupCount()用于分組操作

實(shí)例:

Pattern pattern = Pattern.compile("(Java)(Python)");String test = "123JavaPython456";Matcher matcher = pattern.matcher(test);matcher.find();System.out.println(matcher.groupCount());//返回2System.out.println(matcher.group(1));//返回第一組匹配到的字符串"Java",注意起始索引是1System.out.println(matcher.start(1));//返回3,第一組起始索引System.out.println(matcher.end(1));//返回7 第一組結束索引System.out.println(matcher.group(2));//返回第二組匹配到的字符串"Python"System.out.println(matcher.start(2));//返回7,第二組起始索引System.out.println(matcher.end(2));//返回13 第二組結束索引
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Matcher類(lèi)還提供region(int start, int end)(不包括end)方法用于設定查找范圍,并提供regionStrat()和regionEnd()用于返回起始和結束查找的索引

Pattern pattern = Pattern.compile("Java");        String test = "123JavaJava";        Matcher matcher = pattern.matcher(test);        matcher.region(7, 11);        System.out.println(matcher.regionStart());//返回7        System.out.println(matcher.regionEnd());//返回11        matcher.find();        System.out.println(matcher.group());//返回Java
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Matcher類(lèi)提供了兩種用于重置當前匹配器的方法:reset()和reset(CharSequence input)

Pattern pattern = Pattern.compile("Java");        String test = "Java";        Matcher matcher = pattern.matcher(test);        matcher.find();        System.out.println(matcher.group());//返回Java        matcher.reset();//從起始位置重新匹配        matcher.find();        System.out.println(matcher.group());//返回Java        matcher.reset("Python");        System.out.println(matcher.find());//返回false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

最后說(shuō)一下Matcher類(lèi)的匹配方法:replaceAll(String replacement) 和 replaceFirst(String replacement),其中replaceAll是替換全部匹配到的字符串,而replaceFirst僅僅是替換第一個(gè)匹配到的字符串。

Pattern pattern = Pattern.compile("Java");        String test = "JavaJava";        Matcher matcher = pattern.matcher(test);        System.out.println(matcher.replaceAll("Python"));//返回PythonPython        System.out.println(matcher.replaceFirst("python"));//返回PythonJava
  • 1
  • 2
  • 3
  • 4
  • 5

還有兩個(gè)方法appendReplacement(StringBuffer sb, String replacement) 和 appendTail(StringBuffer sb)也很重要,appendReplacement允許直接將匹配的字符串保存在另一個(gè)StringBuffer中并且是漸進(jìn)式匹配,并不是只匹配依次或匹配全部,而appendTail則是將未匹配到的余下的字符串添加到StringBuffer中。

    Pattern pattern = Pattern.compile("Java");    Matcher matcher = pattern.matcher("Java1234");    System.out.println(matcher.find());//返回true    StringBuffer sb = new StringBuffer();    matcher.appendReplacement(sb, "Python");    System.out.println(sb);//輸出Python    matcher.appendTail(sb);    System.out.println(sb);//輸出Python1234
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
java去除字符串中的空格、回車(chē)、換行符、制表符
正則表達式真的很6,可惜你不會(huì )寫(xiě)
Linux Shell 正則表達式
十六進(jìn)制Unicode編碼字符串與中文字符串互轉
Java過(guò)濾特殊字符的正則表達式 - Java - JavaEye論壇
java正則表達式過(guò)濾特殊字符
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久