成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

正則表達(dá)式中的“環(huán)視”及實(shí)際項(xiàng)目應(yīng)用

Lorry_Lu / 2248人閱讀

摘要:什么是環(huán)視環(huán)視結(jié)構(gòu)不匹配任何字符,只匹配文本中的特定位置,這一點(diǎn)與單詞分界符錨點(diǎn)以及相似,但是環(huán)視比它們更加通用,并且能夠檢測(cè)兩側(cè)文本。利用環(huán)視的正則表達(dá)式為我們知道表示非數(shù)字,那么這里表達(dá)式如果修改為是否可以正常工作。

什么是環(huán)視(lookaround)?

環(huán)視結(jié)構(gòu)不匹配任何字符,只匹配文本中的特定位置,這一點(diǎn)與單詞分界符b、錨點(diǎn)^以及$相似,但是環(huán)視比它們更加通用,并且能夠檢測(cè)兩側(cè)文本。

環(huán)視的四種類型
1)順序環(huán)視-肯定(從左至右查看文本):表達(dá)式為(?=……),匹配成功的條件為表達(dá)式能夠匹配右側(cè)文本,比如(?=d)
2)順序環(huán)視-否定(從左至右查看文本):表達(dá)式為(?!......),匹配成功的條件為表達(dá)式不能匹配右側(cè)文本,比如(?!d)
3)逆序環(huán)視-肯定(從右至左查看文本):表達(dá)式為(?<=……),匹配成功的條件為表達(dá)式能夠匹配左側(cè)文本,比如(?<=d)
4)逆序環(huán)視-否定(從右至左查看文本):表達(dá)式為(? 環(huán)視在個(gè)人經(jīng)歷項(xiàng)目中的兩個(gè)實(shí)際應(yīng)用:

團(tuán)隊(duì)管理中檢測(cè)對(duì)于指定項(xiàng)目的權(quán)限:項(xiàng)目中我們是用類似38:1,749:0,188:1這樣的字符串來(lái)存儲(chǔ)團(tuán)隊(duì)普通成員對(duì)于各用戶項(xiàng)目的權(quán)限,比如其中749代表ID為749的用戶項(xiàng)目,冒號(hào)標(biāo)記符后跟隨的0數(shù)字表示具有查看權(quán)限,1數(shù)字則表示兼具查看和設(shè)置權(quán)限,多個(gè)用戶項(xiàng)目權(quán)限標(biāo)記間以逗號(hào)分隔,如果對(duì)于一個(gè)用戶項(xiàng)目沒(méi)有任何權(quán)限,則整個(gè)權(quán)限字符串中將不會(huì)出現(xiàn)該項(xiàng)目ID?;窘Y(jié)構(gòu)定了之后,那么我們其中一個(gè)類似的查找檢測(cè)權(quán)限問(wèn)題是,已知用戶權(quán)限字符串,檢測(cè)對(duì)于指定項(xiàng)目比如749是否具有設(shè)置權(quán)限,在這里的問(wèn)題情境其實(shí)就是檢測(cè)用戶權(quán)限字符串中是否包含749:1這個(gè)子字符串??梢杂腥缦聨追N解決方式:
1)可以不用正則表達(dá)式,先以逗號(hào)作為分隔符拆分權(quán)限字符串,可以得到一個(gè)數(shù)組,該數(shù)組每一個(gè)元素為類似749:1這樣的單個(gè)項(xiàng)目權(quán)限標(biāo)記子字符串,再檢測(cè)這個(gè)數(shù)組中是否存在749:1這一元素項(xiàng)。
2)匹配749:1出現(xiàn)情況的正則表達(dá)式為^749:1|,749:1,進(jìn)一步可以簡(jiǎn)化為(^|,)749:1(注意:一個(gè)小陷阱,想想這里如果不使用正則表達(dá)式匹配,而只使用普通字符串749:1作為要查找匹配的目標(biāo)會(huì)出現(xiàn)什么問(wèn)題?)。
3)利用環(huán)視的正則表達(dá)式為(?(我們知道D表示非數(shù)字,那么這里表達(dá)式如果修改為(?<=D)749:1是否可以正常工作?)。

千分位格式化數(shù)值(各分析頁(yè)中各指標(biāo)塊數(shù)據(jù)用JavaScript進(jìn)行逗號(hào)格式化):例如我們需要將數(shù)值298444215格式化為298,444,215,正常思維是從這個(gè)數(shù)的右邊開(kāi)始,每次數(shù)3位數(shù)字,如果左邊還有數(shù)字的話,就加入一個(gè)逗號(hào)。如果我們能把這種思路直接用到正則表達(dá)式中當(dāng)然很好,可惜正則表達(dá)式一般都是從左向右工作的。不過(guò)變換下思路,逗號(hào)應(yīng)該加在“左邊有數(shù)字,右邊數(shù)字的個(gè)數(shù)正好是3的倍數(shù)的位置”,這樣就可以使用環(huán)視來(lái)解決這個(gè)問(wèn)題了。初步的正則表達(dá)式為:(?<=d)(?=(ffffd)+$),并結(jié)合開(kāi)發(fā)語(yǔ)言的replace替換功能進(jìn)行全局匹配替換。(想想這里如果去掉$結(jié)果會(huì)如何?)遺憾的是,JavaScript不支持逆序環(huán)視,因此如果要使用JavaScript中的正則表達(dá)式進(jìn)行處理,剛剛的匹配正則表達(dá)式就需要修改為:(d)(?=(ffffd)+$),并需要結(jié)合對(duì)捕獲型括號(hào)的反向引用$1進(jìn)行全局匹配替換。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/100958.html

相關(guān)文章

  • 正則達(dá)式前端使用手冊(cè)

    摘要:非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。 導(dǎo)讀 你有沒(méi)有在搜索文本的時(shí)候絞盡腦汁, 試了一個(gè)又一個(gè)表達(dá)式, 還是不行. 你有沒(méi)有在表單驗(yàn)證的時(shí)候, 只是做做樣子(只要不為空就好), 然后燒香拜佛, 虔誠(chéng)祈禱, 千萬(wàn)不要出錯(cuò). 你有沒(méi)有在使用sed 和 grep 命令的時(shí)候, 感覺(jué)莫名其妙, 明明應(yīng)該支持的元字符, 卻就是匹配不到. 甚至,...

    zhoutao 評(píng)論0 收藏0
  • php實(shí)戰(zhàn)正則達(dá)式(二):提取html元素

    摘要:在閱讀這篇文章前最好把同系列文章實(shí)戰(zhàn)正則表達(dá)式一驗(yàn)證手機(jī)號(hào)先仔細(xì)閱讀一遍。但實(shí)際上這樣一個(gè)表達(dá)式是無(wú)法從上面的中提取第一個(gè)元素的這里主要的問(wèn)題是在默認(rèn)情況下點(diǎn)號(hào)字符無(wú)法匹配換行符。但是很遺憾,正則表達(dá)式中沒(méi)有排除型子表達(dá)式或者說(shuō)排除型分組。 這篇文章通過(guò)提取html元素介紹了正則表達(dá)式中模式修飾符、貪婪匹配與非貪婪匹配、Unicode模式、環(huán)視等知識(shí)點(diǎn)。在閱讀這篇文章前最好把同系列文章...

    ityouknow 評(píng)論0 收藏0
  • 【JS基礎(chǔ)】正則達(dá)式入門(mén)

    摘要:對(duì)于含有量詞正則表達(dá)式,量詞是貪婪模式,會(huì)優(yōu)先選擇盡可能多的匹配修飾的字符,所以該表達(dá)式會(huì)優(yōu)先選擇匹配一個(gè)字符,當(dāng)匹配不到時(shí)再選擇不匹配字符。 正則表達(dá)式的語(yǔ)法 普通字符 字母、數(shù)字、漢字、下劃線以及一些沒(méi)有特殊定義的標(biāo)點(diǎn)符號(hào),都屬于普通字符,正則表達(dá)式中的普通字符匹配字符本身,如: var str = abced console.log(str.match(/a/)) // [a,...

    Mr_houzi 評(píng)論0 收藏0
  • python爬蟲(chóng)抓取純靜態(tài)網(wǎng)站其資源

    摘要:下面跟大家詳細(xì)分享一下寫(xiě)爬蟲(chóng)抓取靜態(tài)網(wǎng)站的全過(guò)程。而我們上面說(shuō)的元字符都代表一定的規(guī)則和占據(jù)一定的字符。 遇到的需求 前段時(shí)間需要快速做個(gè)靜態(tài)展示頁(yè)面,要求是響應(yīng)式和較美觀。由于時(shí)間較短,自己動(dòng)手寫(xiě)的話也有點(diǎn)麻煩,所以就打算上網(wǎng)找現(xiàn)成的。 中途找到了幾個(gè)頁(yè)面發(fā)現(xiàn)不錯(cuò),然后就開(kāi)始思考怎么把頁(yè)面給下載下來(lái)。 由于之前還沒(méi)有了解過(guò)爬蟲(chóng),自然也就沒(méi)有想到可以用爬蟲(chóng)來(lái)抓取網(wǎng)頁(yè)內(nèi)容。所以我采取的辦...

    daydream 評(píng)論0 收藏0
  • javascript正則斷言的理解

    摘要:許久之后一些關(guān)于正則的黑科技才發(fā)現(xiàn)正則里也有較斷言的東東,好吧得了解了解這是什么。注括號(hào)是必須的,寫(xiě)法有些語(yǔ)言并不完全支持,比如的正則并不支持后瞻斷言表達(dá)式,使用了會(huì)報(bào)錯(cuò)的。 之前大三學(xué)習(xí)《編譯原理》的時(shí)候老師講了點(diǎn)叫斷言的東西,但是這門(mén)課壓根就沒(méi)聽(tīng)懂過(guò),所以一直找不到有價(jià)值的東西,好吧原諒我懶惰無(wú)知,理論不適合我,我只適合搬磚。許久之后一些關(guān)于正則的黑科技才發(fā)現(xiàn)正則里也有較斷言的東東...

    kun_jian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<