最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java正則環(huán)視和反向引用功能與用法詳解

 更新時(shí)間:2018年01月11日 12:10:51   作者:Z小繁  
這篇文章主要介紹了Java正則環(huán)視和反向引用功能與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了java正則環(huán)視與反向引用的相關(guān)概念與使用方法,需要的朋友可以參考下

本文實(shí)例講述了Java正則環(huán)視和反向引用功能與用法。分享給大家供大家參考,具體如下:

環(huán)視

1、環(huán)視概念

環(huán)視,又稱為零寬斷言,簡(jiǎn)稱斷言。

環(huán)視強(qiáng)調(diào)位置(前面或后面),必須匹配環(huán)視表達(dá)式,才能匹配成功。

環(huán)視可認(rèn)為是虛擬加入到它所在位置的附加判斷條件,并不消耗正則的匹配字符。

2、環(huán)視基礎(chǔ)表達(dá)式

(?=Expression) 順序肯定環(huán)視,表示所在位置右側(cè)能夠匹配Expression
(?!Expression) 順序否定環(huán)視,表示所在位置右側(cè)不能匹配Expression
(?<=Expression) 逆序肯定環(huán)視,表示所在位置左側(cè)能夠匹配Expression
(?<!Expression) 逆序否定環(huán)視,表示所在位置左側(cè)不能匹配Expression

Note:順序(=)右側(cè)匹配,逆序環(huán)視比順序環(huán)視多了個(gè)<。

JavaScript中只支持順序環(huán)視,不支持逆序環(huán)視。

Java中雖然順序環(huán)視和逆序環(huán)視都支持,但是逆序環(huán)視只支持長(zhǎng)度確定的表達(dá)式,逆序環(huán)視中量詞只支持?,不支持其它長(zhǎng)度不定的量詞。

3、使用示例

3.1、順序肯定環(huán)視(?=Expression)

3.1.1、匹配后綴結(jié)尾是“.txt”的不含后綴的文件名

【.+(?=\.txt)】

文本:

txtfile.txt
exefile.exe
inifile.ini

匹配結(jié)果:txtfile

3.1.2、匹配密碼(必須包含字母(不區(qū)分大小寫)、數(shù)字,6-16位)
【^(?=.*?[a-zA-Z])(?=.*?[0-9])[a-zA-Z0-9]{6,16}$】

(?=.*?[a-zA-Z]) 限定后面的字符中至少有一個(gè)字母,使用 (?=.*?[0-9]) 限定后面的字符中至少有一個(gè)數(shù)字,最后通過(guò)實(shí)際匹配正則 [a-zA-Z0-9]{6,16} 限定量詞。

3.2、順序否定環(huán)視(?!Expression)

3.2.1、匹配除<a></a>之外的標(biāo)簽

【<(?!/?a\b)[^<]+?>】

文本:<a><a1></a>zxiaofan<div>com</d>iv>cc

匹配結(jié)果:

<a1>
<div>
</d>

3.2.2、匹配后綴結(jié)尾不是“.txt”的含后綴的文件名

【.+(?!\.txt)】表達(dá)式錯(cuò)誤,因?yàn)?+沒(méi)有指定位置且是貪婪匹配。(因此.+就能直接匹配txtfile.txt了)
【(.+)(?!\.txt)\.[^.]+$】

文本:

txtfile.txt
exefile.exe
inifile.ini

匹配結(jié)果:

exefile.exe
inifile.ini

3.3、逆序肯定環(huán)視(?<=Expression)

3.3.1、匹配指定標(biāo)簽之間的內(nèi)容

【(?<=<div>)[^<]+(?=</div>)】

文本:<div>zxiaofan.com</div>

匹配結(jié)果:zxiaofan.com

3.3.2、獲取指定參數(shù)的值

【(?<=name=).+】

文本:

name=zxiaofan
age=20
level=6

匹配結(jié)果:zxiaofan

3.4、逆序否定環(huán)視(?<!Expression)

3.4.1、獲取非指定參數(shù)的值

【^[^=#]+=(?<!name=).+$】

文本:

name=zxiaofan
age=20
level=6
#sex=1

匹配結(jié)果:

age=20
level=6

4、綜合示例

4.1、必須包含字母、數(shù)字、特殊字符

【^(?=.*?[a-zA-Z])(?=.*?\d)(?![a-zA-Z\d]+$).+$】

解釋:^(?=.*?[a-zA-Z])限制必須有字母;(?=.*?\d)限制必須有數(shù)字;(?![a-zA-Z\d]+$)限制不能全為數(shù)字和字母。

4.2、匹配主域名(匹配頂級(jí)域名)

【(?<=(?:://\w{0,50}\.)?)(?:\w{0,50}\.)(?:com\.cn|net\.cn|org\.cn|com|net|org|cn|biz|info|cc|tv)】

文本:

vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn

匹配結(jié)果:

zxiaofan.com.cn
zxiaofan.com
zxiaofan.org.cn

Note:【?:】不捕獲匹配的文本到自動(dòng)命名的組,也不給此組分配組好。(去掉后不影響結(jié)果)
特殊域名:萬(wàn)網(wǎng)www.net.cn

4.3、匹配5連號(hào)手機(jī)號(hào)碼

【1[34578]\d{3}(\d)(?!\1{1})(\d)\2{4}】

文本:

18328501111
18328511111
18328551111
18328111111

匹配結(jié)果:

18328511111

Note1:\1匹配第一組內(nèi)容
Note2:(?!\1{1})過(guò)濾6連號(hào)的號(hào)碼

反向引用

1、反向引用概念

捕獲組:按照()子表達(dá)式劃分成若干組;每出現(xiàn)一對(duì)()就是一個(gè)捕獲組;引擎會(huì)對(duì)捕獲組進(jìn)行編號(hào),編號(hào)規(guī)則是左括號(hào)(從左到右出現(xiàn)的順序,從1開(kāi)始編號(hào)。

捕獲組命名:

(?<name>exp) 匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp);
(?:exp) 匹配exp,不捕獲匹配的文本到自動(dòng)命名的組,也不給此分組分配組號(hào)。

反向引用:

\1表示第一組(abc);\2表示第二組;
\k<Word>:引用指定名字的組。

2、使用示例

2.1、匹配首尾相同的文件名

【([a-z]{3})[a-z]+\.\1{1}】

文本:

txtfile.txt
exefile.txt
fileini.ini

匹配結(jié)果:

txtfile.txt

Note:([a-z]{3})為第一組,\1{1}表示引用第一組一次(這里不能寫成\1{3})。

PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java正則表達(dá)式技巧大全》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • java.sql.SQLRecoverableException關(guān)閉的連接異常問(wèn)題及解決辦法

    java.sql.SQLRecoverableException關(guān)閉的連接異常問(wèn)題及解決辦法

    當(dāng)數(shù)據(jù)庫(kù)連接池中的連接被創(chuàng)建而長(zhǎng)時(shí)間不使用的情況下,該連接會(huì)自動(dòng)回收并失效,就導(dǎo)致客戶端程序報(bào)“ java.sql.SQLException: Io 異常: Connection reset” 或“java.sql.SQLException 關(guān)閉的連接”異常問(wèn)題,下面給大家分享解決方案,一起看看吧
    2024-03-03
  • Java 多線程死鎖的產(chǎn)生以及如何避免死鎖

    Java 多線程死鎖的產(chǎn)生以及如何避免死鎖

    這篇文章主要介紹了Java 多線程死鎖的產(chǎn)生以及如何避免死鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 圖解Java經(jīng)典算法歸并排序的原理與實(shí)現(xiàn)

    圖解Java經(jīng)典算法歸并排序的原理與實(shí)現(xiàn)

    歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide?and?Conquer)的一個(gè)非常典型的應(yīng)用。本文將通過(guò)動(dòng)圖詳解歸并排序的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-09-09
  • Activiti如何動(dòng)態(tài)獲取流程圖過(guò)程詳解

    Activiti如何動(dòng)態(tài)獲取流程圖過(guò)程詳解

    這篇文章主要介紹了Activiti如何動(dòng)態(tài)獲取流程圖過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Netty分布式ByteBuf使用directArena分配緩沖區(qū)過(guò)程解析

    Netty分布式ByteBuf使用directArena分配緩沖區(qū)過(guò)程解析

    這篇文章主要介紹了Netty分布式ByteBuf使用directArena分配緩沖區(qū)過(guò)程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java編程synchronized與lock的區(qū)別【推薦】

    Java編程synchronized與lock的區(qū)別【推薦】

    互聯(lián)網(wǎng)信息泛濫環(huán)境下少有的良心之作!如果您想對(duì)Java編程synchronized與lock的區(qū)別有所了解,這篇文章絕對(duì)值得!分享給大家,供需要的朋友參考。不說(shuō)了,我先學(xué)習(xí)去了。
    2017-10-10
  • springboot基于Mybatis mysql實(shí)現(xiàn)讀寫分離

    springboot基于Mybatis mysql實(shí)現(xiàn)讀寫分離

    這篇文章主要介紹了springboot基于Mybatis mysql實(shí)現(xiàn)讀寫分離,需要的朋友可以參考下
    2019-06-06
  • java讀取txt文件內(nèi)容簡(jiǎn)單舉例

    java讀取txt文件內(nèi)容簡(jiǎn)單舉例

    這篇文章主要給大家介紹了關(guān)于java讀取txt文件內(nèi)容簡(jiǎn)單舉例的相關(guān)資料,通常我們可以直接通過(guò)文件流來(lái)讀取txt文件的內(nèi)容,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-07-07
  • java中使用DES加密解密實(shí)例

    java中使用DES加密解密實(shí)例

    這篇文章主要介紹了java中使用DES加密解密實(shí)例,需要的朋友可以參考一下
    2014-01-01
  • SpringBoot實(shí)現(xiàn)yml配置文件為變量賦值

    SpringBoot實(shí)現(xiàn)yml配置文件為變量賦值

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)yml配置文件為變量賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評(píng)論

秭归县| 安国市| 达尔| 旌德县| 上饶市| 华容县| 安岳县| 辽宁省| 女性| 南乐县| 庆元县| 宿州市| 奉新县| 宁津县| 铅山县| 岫岩| 炎陵县| 民县| SHOW| 思茅市| 班戈县| 贵溪市| 崇礼县| 肇庆市| 延吉市| 加查县| 望城县| 布尔津县| 禄丰县| 东乡县| 麻栗坡县| 沁源县| 大余县| 万盛区| 台北县| 江都市| 建始县| 昌宁县| 阿克苏市| 徐汇区| 辉县市|