摘要:直接使用正則表達(dá)式對輸入的字符串進(jìn)行匹配,匹配成功則返回使用正則表示式,進(jìn)行字符串分割進(jìn)行匹配操作,如果匹配成功,這三個(gè)方法都會(huì)返回其中,是在源字符串中找出和正則表達(dá)式匹配的字符串。
概念 正則表達(dá)式
在閱讀本文前,你應(yīng)該已經(jīng)了解了正則表達(dá)式的基本概念以及如何書寫正則表達(dá)式。如果對正則表達(dá)式不是太了解,或者想更深入地了解正則表示式,請點(diǎn)擊這里。
捕獲組捕獲組能夠讓我們方便地從正則表達(dá)式中提取出我們需要的內(nèi)容。捕獲組根據(jù)字符出現(xiàn)的順序,從左往右開始進(jìn)行編號。例如正則表達(dá)式((A)(B(C))), 其捕獲組分別為:
((A)(B(C)))
(A)
(B(C))
(C)
一個(gè)捕獲組通常是用括號包起來的部分,其中整個(gè)正則表示式是第一個(gè)捕獲組,可以選擇用括號包起來,也可以不用括號。除第一個(gè)捕獲組之外,其他捕獲組都需用括號包起來。
詳解Java正則表示式的使用 包簡介java.util.regex包中有一個(gè)interface,兩個(gè)class和一個(gè)exception,分別是
MatchResult
Pattern
Matcher
PatternSyntaxException
其中,MatchResult是interface, Matcher實(shí)現(xiàn)了這個(gè)interface。Pattern和Matcher是class,Pattern是一個(gè)正則表達(dá)式經(jīng)編譯后的表現(xiàn)模式,Matcher是一個(gè)狀態(tài)機(jī)器。
Pattern compile(String regex) / compile(String regex, int flags)靜態(tài)方法,把一個(gè)正則表示式編譯后,生成一個(gè)Pattern對象實(shí)例
Patter p = Pattern.compile("d{2}"); p.pattern(); //返回 d{2}matcher(CharSequence input)
生成一個(gè)Matcher對象。Matcher類時(shí)不能直接實(shí)例化的,可以通過此方法實(shí)例化一個(gè)Matcher對象,從而進(jìn)行各種操作。
matches(String regex, CharSequence input)直接使用正則表達(dá)式對輸入的字符串進(jìn)行匹配,匹配成功則返回true
split(CharSequence input) / split(CharSequence input, int limit)使用正則表示式,進(jìn)行字符串分割
Matcher find() / find(int start) / lookingAt()/matches()進(jìn)行匹配操作,如果匹配成功,這三個(gè)方法都會(huì)返回true.其中,find()是在源字符串中找出和正則表達(dá)式匹配的字符串。find(int start)是從start位置開始尋找下一個(gè)匹配的字符串。lookingAt()是從源字符串的第一個(gè)字符進(jìn)行匹配。matches()是對整個(gè)源字符串中進(jìn)行匹配,如果都匹配才返回true。
String str="abcd23" Pattern.matches("w{4}d{2}",str); //快捷方式 Pattern p = Pattern.compile("w{4}d{2}"); Matcher m = p.matcher(str); //和上面的方法等價(jià) m.matches();group() / start() / end()
當(dāng)使用find() / find(int start) / lookingAt() / matches()進(jìn)行匹配操作并返回true之后,才可以執(zhí)行者三個(gè)方法獲取更加詳細(xì)的信息。
group():返回匹配到的字符串
start():返回匹配到的字符串在源字符串中的位置
end(): 返回匹配到的字符串的最后一個(gè)字符在源字符串中的位置
另外這幾個(gè)方法分別有一個(gè)重載方法 group(int i) / start(i) / end(i), 分別用于對第i個(gè)捕獲組進(jìn)行對應(yīng)的操作
替換源字符串中和正則表達(dá)式匹配的子字符串。其中replaceAll是替換所有的,replaceFirst是替換第一個(gè)匹配的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70539.html
摘要:并且在實(shí)際使用中,早于改歷之前的時(shí)間并沒用格里歷表式的習(xí)慣,都是換成儒略歷表達(dá),所以類這樣的設(shè)計(jì),等于說早于改歷的時(shí)間基本不能用的,還是得自己另外處理一遍。 時(shí)間戳只能計(jì)算 1970 年后的時(shí)間,由于需要計(jì)算更早的日期,發(fā)現(xiàn) PHP 還有提供一個(gè) DateTime類,但在使用中發(fā)現(xiàn)有問題。 1582年,因?yàn)榕f歷精度問題,導(dǎo)致已經(jīng)積累了十天的偏差,,所以此年10月5號~10月14號跳過,...
摘要:壓縮前綴樹其實(shí)就是將所有只有一個(gè)子節(jié)點(diǎn)的節(jié)點(diǎn)合并成一個(gè),以減少?zèng)]有意義的類似鏈表式的鏈接。然后我們開始遍歷這個(gè)前綴樹。 Implement Trie Implement a trie with insert, search, and startsWith methods. Note: You may assume that all inputs are consist of lowe...
摘要:我們在中操作字符串,往往是將它轉(zhuǎn)換為數(shù)組,再操作,如字符串的反轉(zhuǎn)字符串常用的一些方法判斷一個(gè)字符串是否以某個(gè)字符串開頭返回在字符串中首次出現(xiàn)的位置從位置開始查找,如果不存在,則返回。如果則查找整個(gè)字符串如同傳進(jìn)了。 我們在js中操作字符串,往往是將它轉(zhuǎn)換為數(shù)組,再操作,如: split().reverse().join() 字符串的反轉(zhuǎn) showImg(https://segmentf...
摘要:創(chuàng)建應(yīng)用對象之間協(xié)作關(guān)系的行為通常稱為裝配中有三種裝配的方法在中顯式配置在中顯式配置隱式的發(fā)現(xiàn)機(jī)制和自動(dòng)裝配這兒要說的就是第三個(gè)自動(dòng)發(fā)現(xiàn)與裝配,它會(huì)帶來編程的快感。 一、前言 Spring的Bean Factory所實(shí)現(xiàn)的IoC輕量級容器,可以很方便地讓大家基于POJO開發(fā)JavaEE應(yīng)用程序。 創(chuàng)建應(yīng)用對象之間協(xié)作關(guān)系的行為通常稱為裝配 Spring中有三種裝配Bean的方法 在X...
閱讀 1696·2021-11-23 09:51
閱讀 3218·2021-09-26 10:21
閱讀 814·2021-09-09 09:32
閱讀 893·2019-08-29 16:06
閱讀 3322·2019-08-26 13:36
閱讀 783·2019-08-26 10:56
閱讀 2575·2019-08-26 10:44
閱讀 1155·2019-08-23 14:04