婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Java正則相關(guān)的Pattern和Matcher類及遇到的坑

Java正則相關(guān)的Pattern和Matcher類及遇到的坑

熱門標簽:外呼系統(tǒng)無呼出路由是什么原因 400電話辦理電話辦理 甘肅醫(yī)療外呼系統(tǒng)排名 梅縣地圖標注 ai電話機器人搭建 地圖標注教學(xué)點 呼叫系統(tǒng)外呼只能兩次 貴港公司如何申請400電話 西藏智能外呼系統(tǒng)代理商

此篇文章是記錄我在學(xué)習(xí)Java正則表達式時候?qū)W到的和遇到的坑。

先來說說 Matcher 里面的三個方法(取的結(jié)果以group()方法為例子)

  • matches():整個匹配,只有整個字符序列完全匹配成功,才返回True,否則返回False。但如果前部分匹配成功,將移動下次匹配的位置。舉個例子如果字符串為"a123",正則表達式為"\w\d\d\d",則matches()方法才返回true,換言之,就是要匹配的字符串需要跟正則表達式一一對應(yīng),字母對應(yīng)字母,數(shù)字對應(yīng)數(shù)字,所以稱之為完全匹配,錯一位都不行。(這里的理解花了我好長時間,網(wǎng)上搜到的都沒有提及,也許是我理解能力不夠)
  • find():部分匹配,從當前位置開始匹配,找到一個匹配的子串,將移動下次匹配的位置。“find()像迭代器那樣向前遍歷輸入字符串?!?--摘自《Java編程思想。看下面的例子中的find()方法,要匹配的字符串為"a123b",正則表達式為"\d\d\d",而最后輸出結(jié)果為:123,所以稱之為部分匹配,只要有,就返回true。
  • lookingAt():部分匹配,總是從第一個字符進行匹配,匹配成功了不再繼續(xù)匹配,匹配失敗了,也不繼續(xù)匹配。lookingAt()方法介于matches()和find()方法之間。lookingAt()方法的部分匹配指從第一位開始匹配如果第一位沒有匹配到,就不再匹配,直接返回false,如果第一位匹配到了,則匹配第二位,以此類推。例子:要匹配的字符串為"a123b",正則表達式為"\w\d\d",輸出結(jié)果為"a12",很好理解,就是一位一位地匹配,匹配到了就匹配下一位。"\w\d\d"這個正則正好代表"字母數(shù)字數(shù)字",所以正好輸出結(jié)果為a12。

好了上測試代碼:

package com.wjj.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author 作者 : 榨菜哥
* @version 創(chuàng)建時間:2016年8月18日 上午8:47:58
* 類說明:正則表達式的練習(xí)
*/
public class Regex {
  //find方法測試
  public static void find(String html) {
    String regex = "\\d\\d\\d";
    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(html);
    System.out.print("find():");
    if (matcher.find()) {
      System.out.println(matcher.group());
    }
  }
  //matches方法測試
  public static void matches(String html) {
    String regex = "^\\w\\d\\d\\d";
    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(html);
    System.out.print("matches():");
    if (matcher.matches()) {
      System.out.println(matcher.group());
    }
  }
  //lookingAt方法測試
  public static void lookingAt(String html) {
    String regex = "\\w\\d\\d";
    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(html);
    System.out.print("lookingAt():");
    if (matcher.lookingAt()) {
      System.out.println(matcher.group());
    }
  }
  public static void main(String[] args) {
    //find方法測試
    find("a123b");
    //matches方法測試
    matches("a123");
    //lookingAt方法測試
    lookingAt("a123b");
  }
}

輸出結(jié)果:

    find():123
    matches():a123
    lookingAt():a12

小結(jié):正則表達式本身并不難,平常使用的時候只要按照規(guī)則來寫就好了。在學(xué)習(xí)中理解matches、find、和lookingAt三個方法花了我比較長的時間,一直不能理解完全匹配和部分匹配是什么意思,最后還是在stackoverflow上找到了想要的答案。

以上是個人學(xué)習(xí)的理解,有不對之處,希望給予指點。

(補充:正則表達式Pattern如果調(diào)用多次容易出問題,比如內(nèi)存溢出,因為Pattern每執(zhí)行一次就編譯一次正則表達式,因此建議將需要的正則表達式進行預(yù)編譯。)

正則表達式學(xué)習(xí)教程: http://deerchao.net/tutorials/regex/regex.htm ,文中作者寫得挺詳細的,并且通俗易懂。

總結(jié)

以上所述是小編給大家介紹的Java正則相關(guān)的Pattern和Matcher類及遇到的坑,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • Java正則表達式Pattern和Matcher原理詳解
  • Java matches類,Pattern類及matcher類用法示例
  • 詳解Java正則表達式中Pattern類和Matcher類
  • JAVA正則表達式 Pattern和Matcher
  • Java Pattern與Matcher字符串匹配案例詳解

標簽:本溪 湖州 涼山 大興安嶺 泰安 哈密 常州 巨人網(wǎng)絡(luò)通訊聲明:本文標題《Java正則相關(guān)的Pattern和Matcher類及遇到的坑》,本文關(guān)鍵詞  Java,正則,相關(guān),的,Pattern,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。

  • 相關(guān)文章
  • 下面列出與本文章《Java正則相關(guān)的Pattern和Matcher類及遇到的坑》相關(guān)的同類信息!
  • 本頁收集關(guān)于Java正則相關(guān)的Pattern和Matcher類及遇到的坑的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 长春市| 赣州市| 闽侯县| 铜陵市| 桑日县| 周口市| 宿州市| 博白县| 昭苏县| 出国| 老河口市| 白朗县| 武川县| 临沧市| 五寨县| 焦作市| 盱眙县| 连州市| 乌兰察布市| 密云县| 乌恰县| 黄大仙区| 古蔺县| 清流县| 横山县| 安庆市| 耒阳市| 马公市| 苍溪县| 台中县| 永城市| 三门县| 和田市| 卢氏县| 新民市| 乐至县| 奈曼旗| 彩票| 余庆县| 搜索| 永胜县|