欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

環(huán)視

1、環(huán)視概念

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

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

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

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

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

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

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

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

3、使用示例

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

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

【.+(?=\.txt)】

文本:

txtfile.txt
exefile.exe
inifile.ini

匹配結果:txtfile

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

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

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

3.2.1、匹配除<a></a>之外的標簽

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

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

匹配結果:

<a1>
<div>
</d>

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

【.+(?!\.txt)】表達式錯誤,因為.+沒有指定位置且是貪婪匹配。(因此.+就能直接匹配txtfile.txt了)
【(.+)(?!\.txt)\.[^.]+$】

文本:

txtfile.txt
exefile.exe
inifile.ini

匹配結果:

exefile.exe
inifile.ini

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

3.3.1、匹配指定標簽之間的內容

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

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

匹配結果:zxiaofan.com

3.3.2、獲取指定參數的值

【(?<=name=).+】

文本:

name=zxiaofan
age=20
level=6

匹配結果:zxiaofan

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

3.4.1、獲取非指定參數的值

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

文本:

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

匹配結果:

age=20
level=6

4、綜合示例

4.1、必須包含字母、數字、特殊字符

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

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

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

【(?<=(?:://\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

匹配結果:

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

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

4.3、匹配5連號手機號碼

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

文本:

18328501111
18328511111
18328551111
18328111111

匹配結果:

18328511111

Note1:\1匹配第一組內容
Note2:(?!\1{1})過濾6連號的號碼

反向引用

1、反向引用概念

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

捕獲組命名:

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

反向引用:

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

2、使用示例

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

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

文本:

txtfile.txt
exefile.txt
fileini.ini

匹配結果:

txtfile.txt

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

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

JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript

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

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

希望本文所述對大家java程序設計有所幫助。

相關文章

  • SpringBoot實現(xiàn)文件下載功能的方式分享

    SpringBoot實現(xiàn)文件下載功能的方式分享

    這篇文章主要為大家詳細介紹了SpringBoot這哪個實現(xiàn)文件下載功能的幾種方式,文中的實現(xiàn)方法簡介易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • jsoup?框架的使用小結

    jsoup?框架的使用小結

    jsoup 是一款基于Java的HTML解析器,它提供了一套非常省力的API,不但能直接解析某個URL地址、HTML文本內容,而且還能通過類似于 DOM、CSS 或者jQuery的方法來操作數據,所以jsoup也可以被當做爬蟲工具使用,這篇文章主要介紹了jsoup使用,需要的朋友可以參考下
    2023-04-04
  • Spring?Boot緩存實戰(zhàn)之Redis?設置有效時間和自動刷新緩存功能(時間支持在配置文件中配置)

    Spring?Boot緩存實戰(zhàn)之Redis?設置有效時間和自動刷新緩存功能(時間支持在配置文件中配置)

    這篇文章主要介紹了Spring?Boot緩存實戰(zhàn)?Redis?設置有效時間和自動刷新緩存,時間支持在配置文件中配置,需要的朋友可以參考下
    2023-05-05
  • mybatis 加載配置文件的方法(兩種方式)

    mybatis 加載配置文件的方法(兩種方式)

    這篇文章主要介紹了mybatis 加載配置文件的方法,通過實例代碼給大家介紹了mybatis 加載配置文件的兩種方式,需要的朋友可以參考下
    2017-12-12
  • Tomcat 服務器 在45秒內未啟動成功的解決方法

    Tomcat 服務器 在45秒內未啟動成功的解決方法

    下面小編就為大家?guī)硪黄猅omcat 服務器 在45秒內未啟動成功的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • java中金額元轉萬元工具類的實例

    java中金額元轉萬元工具類的實例

    這篇文章主要介紹了java中金額元轉萬元工具類的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java解析xml文件和json轉換的方法(DOM4j解析)

    Java解析xml文件和json轉換的方法(DOM4j解析)

    相信大家都知道Java解析xml的方法有四種,每種方法都很不錯,今天通過本文給大家分享使用DOM4j進行解析的方法,文章通過兩種方法給大家進行解析,感興趣的朋友一起看看吧
    2021-08-08
  • 深入理解Java設計模式之裝飾模式

    深入理解Java設計模式之裝飾模式

    這篇文章主要介紹了JAVA設計模式之裝飾模式的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2021-11-11
  • win10 64位 jdk1.8的方法教程詳解

    win10 64位 jdk1.8的方法教程詳解

    這篇文章主要介紹了win10 64位 jdk1.8的方法教程詳解,本文給大家介紹的非常詳細,對大家的工作或學習具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • springboot接收日期類型參數的操作方法

    springboot接收日期類型參數的操作方法

    如果使用Get請求,直接使用對象接收,則可以使用@DateTimeFormat注解進行格式化,本文重點給大家介紹springboot接收日期類型參數的方法,感興趣的朋友一起看看吧
    2024-02-02

最新評論