摘要:它包括兩個類和一個是一個正則表達式經(jīng)編譯后的表現(xiàn)模式。這個標(biāo)志能讓表達式忽略大小寫進行匹配。默認情況下,這兩個表達式僅僅匹配字符串的開始和結(jié)束。返回當(dāng)前查找而獲得的與指定的組匹配的子串內(nèi)容
Pattern和Matcher
Java.util.regex 是一個用正則表達式所訂制的模式來對字符串進行匹配工作的類庫包。它包括兩個類:Pattern和Matcher
Pattern: 一個Pattern是一個正則表達式經(jīng)編譯后的表現(xiàn)模式。
Matcher: 一個Matcher對象是一個狀態(tài)機器,它依據(jù)Pattern對象做為匹配模式對字符串展開匹配檢查。
Pattern類
常用方法:
static Pattern compile(String regex) 將給定的正則表達式編譯并賦予給Pattern類
static Pattern compile(String regex, int flags) flag參數(shù)的指定,可選的flag參數(shù)包括:CASE INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE, CANON E
int flags() 返回當(dāng)前Pattern的匹配flag參數(shù).
[java] view plain copy print?在CODE上查看代碼片派生到我的代碼片
Pattern.CANON_EQ,當(dāng)且僅當(dāng)兩個字符的"正規(guī)分解(canonical decomposition)"都完全相同的情況下,才認定匹配。
Pattern.CASE_INSENSITIVE(?i) 默認情況下,大小寫不敏感的匹配只適用于US-ASCII字符集。這個標(biāo)志能讓表達式忽略大小寫進行匹配。
Pattern.COMMENTS(?x)在這種模式下,匹配時會忽略(正則表達式里的)空格字符(不是指表達式里的"s",而是指表達式里的空格,tab,回車之類)。
Pattern.DOTALL(?s)在這種模式下,表達式"."可以匹配任意字符,包括表示一行的結(jié)束符。 默認情況下,表達式"."不匹配行的結(jié)束符。
Pattern.MULTILINE(?m)在這種模式下,"^"和"$"分別匹配一行的開始和結(jié)束。
此外,"^"仍然匹配字符串的開始,"$"也匹配字符串的結(jié)束。默認情況下,這兩個表達式僅僅匹配字符串的開始和結(jié)束。
Pattern.UNICODE_CASE(?u)在這個模式下,如果你還啟用了CASE_INSENSITIVE標(biāo)志,
那么它會對Unicode字符進行大小寫不明感的匹配。默認情況下,大小寫不敏感的匹配只適用于US-ASCII字符集。
Pattern.UNIX_LINES(?d)在這個模式下,只有"n"才被認作一行的中止,并且與".","^",以及"$"進行匹配。
Matcher matcher(CharSequence input) 生成一個給定命名的Matcher對象
[java] view plain copy print?在CODE上查看代碼片派生到我的代碼片
Pattern p = Pattern.compile("《(.*)》");
Matcher m = p.matcher("《測試》匹配書名號中間的內(nèi)容");
while (m.find()) {
System.out.println(m.group(1));
}
static boolean matches(String regex, CharSequence input)
String[] split(CharSequence input) 將目標(biāo)字符串按照Pattern里所包含的正則表達式為模進行分割。
String[] split(CharSequence input, int limit) 作用同上,增加參數(shù)limit目的在于要指定分割的段數(shù)
[java] view plain copy print?在CODE上查看代碼片派生到我的代碼片
Pattern p = Pattern.compile("|");
String[] arr = p.split("woshishen|sadsadsa");
System.out.println(arr[0] + "----" + arr[1]);
Matcher類
Matcher appendReplacement(StringBuffer sb, String replacement) 將當(dāng)前匹配子串替換為指定字符串,并且將替換后的子串以及其之前到上次匹配子串之后的字符串段添加到一個StringBuffer對象里。
StringBuffer appendTail(StringBuffer sb) 將最后一次匹配工作后剩余的字符串添加到一個StringBuffer對象里。
int end() 返回當(dāng)前匹配的子串的最后一個字符在原目標(biāo)字符串中的索引位置 。
int end(int group) 返回與匹配模式里指定的組相匹配的子串最后一個字符的位置。
boolean find() 嘗試在目標(biāo)字符串里查找下一個匹配子串。
boolean find(int start) 重設(shè)Matcher對象,并且嘗試在目標(biāo)字符串里從指定的位置開始查找下一個匹配的子串。
String group() 返回當(dāng)前查找而獲得的與組匹配的所有子串內(nèi)容
String group(int group) 返回當(dāng)前查找而獲得的與指定的組匹配的子串內(nèi)容
int groupCount() 返回當(dāng)前查找所獲得的匹配組的數(shù)量。
boolean lookingAt() 檢測目標(biāo)字符串是否以匹配的子串起始。
boolean matches() 嘗試對整個目標(biāo)字符展開匹配檢測,也就是只有整個目標(biāo)字符串完全匹配時才返回真值。
Pattern pattern() 返回該Matcher對象的現(xiàn)有匹配模式,也就是對應(yīng)的Pattern 對象。
String replaceAll(String replacement) 將目標(biāo)字符串里與既有模式相匹配的子串全部替換為指定的字符串。
String replaceFirst(String replacement) 將目標(biāo)字符串里第一個與既有模式相匹配的子串替換為指定的字符串。
Matcher reset() 重設(shè)該Matcher對象。
Matcher reset(CharSequence input) 重設(shè)該Matcher對象并且指定一個新的目標(biāo)字符串。
int start() 返回當(dāng)前查找所獲子串的開始字符在原目標(biāo)字符串中的位置。
int start(int group) 返回當(dāng)前查找所獲得的和指定組匹配的子串的第一個字符在原目標(biāo)字符串中的位置。
[java] view plain copy print?在CODE上查看代碼片派生到我的代碼片
Pattern p = Pattern.compile("(第(.+)部)");
Matcher m = p.matcher("大宋提刑官 第1");
while (m.find()) {
System.out.println(m.start()); //返回當(dāng)前查找所獲子串的開始字符在原目標(biāo)字符串中的位置。 System.out.println(m.end()); //返回與匹配模式里指定的組相匹配的子串最后一個字符的位置。 System.out.println(m.group(2)); //返回當(dāng)前查找而獲得的與指定的組匹配的子串內(nèi)容
}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/66921.html
摘要:正則表達式等待匹配的字符這里可以輸入任何繼承了的類返回一個值說明是否匹配這里需要注意的是,和均不允許通過構(gòu)造器新建一個對象。 前言 之前一直想要做一個自己的爬蟲,然后從nba數(shù)據(jù)相關(guān)的網(wǎng)上【虎撲,騰訊,官網(wǎng)等,要視網(wǎng)站是否支持】爬點數(shù)據(jù)寫數(shù)據(jù)分析和圖形化展示。雖然年輕的時候就實現(xiàn)過這個功能,但是當(dāng)時直接借用了一個網(wǎng)上現(xiàn)成的jar包,然后在那個基礎(chǔ)上寫了一個非常簡陋的正則表達式來提取數(shù)據(jù)...
摘要:直接使用正則表達式對輸入的字符串進行匹配,匹配成功則返回使用正則表示式,進行字符串分割進行匹配操作,如果匹配成功,這三個方法都會返回其中,是在源字符串中找出和正則表達式匹配的字符串。 概念 正則表達式 在閱讀本文前,你應(yīng)該已經(jīng)了解了正則表達式的基本概念以及如何書寫正則表達式。如果對正則表達式不是太了解,或者想更深入地了解正則表示式,請點擊這里。 捕獲組 捕獲組能夠讓我們方便地從正則表達...
摘要:正則表達式是一個強大的字符串處理工具,可以對字符串進行查找提取分隔替換等操作。例如,正則表達式用于匹配的三個訪問控制符其中之一邊界匹配符數(shù)量標(biāo)識符貪婪模式數(shù)量表示符默認采用貪婪模式。方法以空格為分隔符,將字符串分割成多個子串哈哈 正則表達式是一個強大的字符串處理工具,可以對字符串進行查找、提取、分隔、替換等操作。String類里提供了如下幾個特殊方法 boolean matches(...
摘要:的構(gòu)造器經(jīng)過重載可以接受多種輸出目的地,不過最常用的還是和。組號為表示整個表達式,組號表示被第一對括號括起的組,依此類推。有多個重載的構(gòu)造器,可以接受和對象。 點擊進入我的博客 字符串操作是計算機程序設(shè)計中最常見的行為 13.1 不可變String String底層是由char[]實現(xiàn)的,是不可變的??雌饋頃淖僑tring的方法,實際上都是創(chuàng)建了一個新的String對象,任何指向它...
摘要:正則表達式是從字符串最頭部開始匹配,一直到結(jié)束,需要匹配整個串匹配的時候返回包含正則匹配的串為找到所有匹配的串代表整個表達式星座運勢匹配創(chuàng)建對象現(xiàn)在創(chuàng)建對象星座運勢星座運勢參考資料 Java 正則表達式 java.util.regex.Pattern java.util.regex.Matcher Match match 是從字符串最頭部開始匹配,一直到結(jié)束,需要匹配整個串 Strin...
閱讀 911·2021-09-22 16:01
閱讀 2171·2021-08-20 09:37
閱讀 1763·2019-08-30 15:54
閱讀 1745·2019-08-30 15:44
閱讀 914·2019-08-28 18:23
閱讀 3071·2019-08-26 12:17
閱讀 1091·2019-08-26 11:56
閱讀 1596·2019-08-23 16:20