本文小編為大家詳細介紹“Java的正則?:?=?!是什么意思”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Java的正則?:?=?!是什么意思”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創(chuàng)新互聯(lián)建站長期為1000多家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為白沙黎族企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,白沙黎族網(wǎng)站改版等技術(shù)服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
()表示捕獲分組,獲取匹配,()把每個分組里的匹配的值保存起來
(?:)表示非捕獲分組,獲取匹配,非捕獲分組匹配的值不會保存起來,可以提高程序執(zhí)行速度
(?=?!?<=?
舉例說明:
// 是否獲取匹配 測試文本 abxoxcd ..(xox).. 匹配 abxoxcd ..(?:xox).. 匹配 abxoxcd ..(?=xox).. 匹配 abxo 獲取匹配,一般匹配到了字符之后,該字符就被消耗、輸出。不獲取匹配,不會消耗字符。 // 是否保存匹配的值 測試文本 AAABBCaaA E666FF (A)\\1* 匹配 AAA、A (\\w)\\1+ 匹配 AAA、BB、aa、666、FF (?:A)(B)\\1* 匹配 ABB 因為非捕獲分組不保存匹配的值,所以 (?:A)(B)\\1* 匹配 ABB 第一個\\1表示(B)這個捕獲組捕獲到的值。 “注意:反向引用表示捕獲到的值,而不是再次使用正則表達式” 這里用到了一個新的知識點,反向引用。
1、正則表達式中 “\number” 表示反向引用,表示引用一個捕獲組,需要和小括號 “()” 一起使用
2、正則捕獲組的下標從 0 開始,下標為 0 的組是整個表達式,下標為 1 的表示從左到右開始的第一個左括號所包含的值,后面的數(shù)字以此類推
3、捕獲組在匹配成功時,會將子表達式匹配到的內(nèi)容,保存到內(nèi)存中一個以數(shù)字編號的組里,可以簡單的認為是對一個局部變量進行了賦值,這時就可以通過反向引用的方式,引用這個局部變量的值。
4、反向引用必須要與捕獲組一同使用,如果沒有捕獲組,而使用了反向引用的語法,不同語言的處理方式不一致,有的語言會拋異常,有的語言會當作普通的轉(zhuǎn)義處理
// 前瞻: exp1(?=exp2) 查找exp2前面的exp1 // 后顧: (?<=exp2)exp1 查找exp2后面的exp1 // 負前瞻: exp1(?!exp2) 查找后面不是exp2的exp1 // 負后顧: (?舉例說明:
// 正向預查和反向預查 測試文本 abxoxcd ..(?=xox) 匹配 ab ..(?=oxo) 匹配不到 (?=xox).. 匹配xo (?<=xox).. 匹配 cd 預查只需要記住:1、環(huán)顧全局定位到非捕獲組;2、不獲取匹配(不消耗字符),不保存匹配的值(不能使用反向引用)加餐
提問:強密碼(必須包含數(shù)字、小寫字母和大寫字母三種字符,即這三種字符的組合,且不能使用特殊字符,長度在8-16之間),你認為必須是 1個數(shù)字+1個小寫字母+1個大寫字母 這種順序嗎?
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$
(?=.*[0-9])表示任意字符+一個數(shù)字
(?=.*[a-z])表示任意字符+一個小寫字母
(?=.*[A-Z])表示任意字符+一個大寫字母
[0-9a-zA-Z]{8,16}表示8-16個數(shù)字、大小寫字母
當有多個正向預查規(guī)則時它們是并列的,不是串行的
測試文本 abc2abc \\d(?=a)(?=b) 匹配不到 \\d(?=a)(?=.b) 匹配 2 當然這是為了演示它的規(guī)則,其實可以寫 \\d(?=ab) 這里主要的原因是:不獲取匹配(不消耗字符)。 對于 ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$ 其實整個正則表示可以分為三部分: /^(?=.*[0-9])[0-9a-zA-Z]{8,16}$/ /^(?=.*[a-z])[0-9a-zA-Z]{8,16}$/ /^(?=.*[A-Z])[0-9a-zA-Z]{8,16}$/ 待匹配字符串必須同時滿足這三部分才可以讀到這里,這篇“Java的正則?:?=?!是什么意思”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:Java的正則?:?=?!是什么意思
URL網(wǎng)址:http://weahome.cn/article/jdgjoi.html