亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

Java的正則?:?=?!是什么意思

WBOY
發(fā)布: 2023-05-21 12:10:06
轉(zhuǎn)載
2620人瀏覽過(guò)

Java 正則?:?=?!的理解

java的正則?:?=?!是什么意思

1:解釋是否獲取匹配并保存匹配的值

  1. ()表示捕獲分組,獲取匹配,()把每個(gè)分組里的匹配的值保存起來(lái)

  2. (?:)表示非捕獲分組,獲取匹配,非捕獲分組匹配的值不會(huì)保存起來(lái),可以提高程序執(zhí)行速度

  3. (?=?!?<=?<!)表示非捕獲分組,不獲取匹配,也不保存匹配的值

舉例說(shuō)明:

// 是否獲取匹配
測(cè)試文本 abxoxcd

  ..(xox)..       匹配 abxoxcd

  ..(?:xox)..     匹配 abxoxcd

  ..(?=xox)..     匹配 abxo

獲取匹配,一般匹配到了字符之后,該字符就被消耗、輸出。不獲取匹配,不會(huì)消耗字符。


// 是否保存匹配的值
測(cè)試文本 AAABBCaaA E666FF

  (A)\1*       匹配 AAA、A

  (\w)\1+     匹配 AAA、BB、aa、666、FF

  (?:A)(B)\1*  匹配 ABB

因?yàn)榉遣东@分組不保存匹配的值,所以  (?:A)(B)\1* 匹配 ABB 第一個(gè)\1表示(B)這個(gè)捕獲組捕獲到的值。  “注意:反向引用表示捕獲到的值,而不是再次使用正則表達(dá)式”

這里用到了一個(gè)新的知識(shí)點(diǎn),反向引用。
登錄后復(fù)制

??Java的正則?:?=?!是什么意思

boardmix博思白板
boardmix博思白板

boardmix博思白板,一個(gè)點(diǎn)燃團(tuán)隊(duì)協(xié)作和激發(fā)創(chuàng)意的空間,集aigc,一鍵PPT,思維導(dǎo)圖,筆記文檔多種創(chuàng)意表達(dá)能力于一體,將團(tuán)隊(duì)工作效率提升到新的層次。

boardmix博思白板39
查看詳情 boardmix博思白板

? 1、正則表達(dá)式中??“ umber”?表示反向引用,表示引用一個(gè)捕獲組,需要和小括號(hào)?“()”?一起使用

? 2、正則捕獲組的下標(biāo)從 0 開(kāi)始,下標(biāo)為 0 的組是整個(gè)表達(dá)式,下標(biāo)為 1 的表示從左到右開(kāi)始的第一個(gè)左括號(hào)所包含的值,后面的數(shù)字以此類推

? 3、捕獲組在匹配成功時(shí),會(huì)將子表達(dá)式匹配到的內(nèi)容,保存到內(nèi)存中一個(gè)以數(shù)字編號(hào)的組里,可以簡(jiǎn)單的認(rèn)為是對(duì)一個(gè)局部變量進(jìn)行了賦值,這時(shí)就可以通過(guò)反向引用的方式,引用這個(gè)局部變量的值。

? 4、反向引用必須要與捕獲組一同使用,如果沒(méi)有捕獲組,而使用了反向引用的語(yǔ)法,不同語(yǔ)言的處理方式不一致,有的語(yǔ)言會(huì)拋異常,有的語(yǔ)言會(huì)當(dāng)作普通的轉(zhuǎn)義處理

2:解釋正向預(yù)查和反向預(yù)查

// 前瞻:
exp1(?=exp2)   查找exp2前面的exp1
// 后顧:
(?<=exp2)exp1  查找exp2后面的exp1
// 負(fù)前瞻:
exp1(?!exp2)   查找后面不是exp2的exp1
// 負(fù)后顧:
(?<!exp2)exp1  查找前面不是exp2的exp1
登錄后復(fù)制

舉例說(shuō)明:

// 正向預(yù)查和反向預(yù)查
測(cè)試文本 abxoxcd

  ..(?=xox)  匹配 ab

  ..(?=oxo)  匹配不到

  (?=xox)..  匹配xo

  (?<=xox).. 匹配 cd

預(yù)查只需要記?。?、環(huán)顧全局定位到非捕獲組;2、不獲取匹配(不消耗字符),不保存匹配的值(不能使用反向引用)
登錄后復(fù)制

加餐

提問(wèn):強(qiáng)密碼(必須包含數(shù)字、小寫(xiě)字母和大寫(xiě)字母三種字符,即這三種字符的組合,且不能使用特殊字符,長(zhǎng)度在8-16之間),你認(rèn)為必須是 1個(gè)數(shù)字+1個(gè)小寫(xiě)字母+1個(gè)大寫(xiě)字母 這種順序嗎?

?^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$

(?=.*[0-9])表示任意字符+一個(gè)數(shù)字

(?=.*[a-z])表示任意字符+一個(gè)小寫(xiě)字母

  (?=.*[A-Z])表示任意字符+一個(gè)大寫(xiě)字母

  [0-9a-zA-Z]{8,16}表示8-16個(gè)數(shù)字、大小寫(xiě)字母

當(dāng)有多個(gè)正向預(yù)查規(guī)則時(shí)它們是并列的,不是串行的

測(cè)試文本 abc2abc

  \d(?=a)(?=b)  匹配不到

  \d(?=a)(?=.b) 匹配 2   當(dāng)然這是為了演示它的規(guī)則,其實(shí)可以寫(xiě) \d(?=ab)

這里主要的原因是:不獲取匹配(不消耗字符)。

對(duì)于 ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,16}$ 
其實(shí)整個(gè)正則表示可以分為三部分:
/^(?=.*[0-9])[0-9a-zA-Z]{8,16}$/
/^(?=.*[a-z])[0-9a-zA-Z]{8,16}$/
/^(?=.*[A-Z])[0-9a-zA-Z]{8,16}$/
待匹配字符串必須同時(shí)滿足這三部分才可以
登錄后復(fù)制

以上就是Java的正則?:?=?!是什么意思的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

相關(guān)標(biāo)簽:
java速學(xué)教程(入門(mén)到精通)
java速學(xué)教程(入門(mén)到精通)

java怎么學(xué)習(xí)?java怎么入門(mén)?java在哪學(xué)?java怎么學(xué)才快?不用擔(dān)心,這里為大家提供了java速學(xué)教程(入門(mén)到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來(lái)源:億速云網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)