国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

正則表達式中的“環視”及實際項目應用

Lorry_Lu / 2188人閱讀

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

什么是環視(lookaround)?

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

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

團隊管理中檢測對于指定項目的權限:項目中我們是用類似38:1,749:0,188:1這樣的字符串來存儲團隊普通成員對于各用戶項目的權限,比如其中749代表ID為749的用戶項目,冒號標記符后跟隨的0數字表示具有查看權限,1數字則表示兼具查看和設置權限,多個用戶項目權限標記間以逗號分隔,如果對于一個用戶項目沒有任何權限,則整個權限字符串中將不會出現該項目ID。基本結構定了之后,那么我們其中一個類似的查找檢測權限問題是,已知用戶權限字符串,檢測對于指定項目比如749是否具有設置權限,在這里的問題情境其實就是檢測用戶權限字符串中是否包含749:1這個子字符串。可以有如下幾種解決方式:
1)可以不用正則表達式,先以逗號作為分隔符拆分權限字符串,可以得到一個數組,該數組每一個元素為類似749:1這樣的單個項目權限標記子字符串,再檢測這個數組中是否存在749:1這一元素項。
2)匹配749:1出現情況的正則表達式為^749:1|,749:1,進一步可以簡化為(^|,)749:1(注意:一個小陷阱,想想這里如果不使用正則表達式匹配,而只使用普通字符串749:1作為要查找匹配的目標會出現什么問題?)。
3)利用環視的正則表達式為(?(我們知道D表示非數字,那么這里表達式如果修改為(?<=D)749:1是否可以正常工作?)。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100958.html

相關文章

  • 正則達式前端使用手冊

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

    zhoutao 評論0 收藏0
  • php實戰正則達式(二):提取html元素

    摘要:在閱讀這篇文章前最好把同系列文章實戰正則表達式一驗證手機號先仔細閱讀一遍。但實際上這樣一個表達式是無法從上面的中提取第一個元素的這里主要的問題是在默認情況下點號字符無法匹配換行符。但是很遺憾,正則表達式中沒有排除型子表達式或者說排除型分組。 這篇文章通過提取html元素介紹了正則表達式中模式修飾符、貪婪匹配與非貪婪匹配、Unicode模式、環視等知識點。在閱讀這篇文章前最好把同系列文章...

    ityouknow 評論0 收藏0
  • 【JS基礎】正則達式入門

    摘要:對于含有量詞正則表達式,量詞是貪婪模式,會優先選擇盡可能多的匹配修飾的字符,所以該表達式會優先選擇匹配一個字符,當匹配不到時再選擇不匹配字符。 正則表達式的語法 普通字符 字母、數字、漢字、下劃線以及一些沒有特殊定義的標點符號,都屬于普通字符,正則表達式中的普通字符匹配字符本身,如: var str = abced console.log(str.match(/a/)) // [a,...

    Mr_houzi 評論0 收藏0
  • python爬蟲抓取純靜態網站其資源

    摘要:下面跟大家詳細分享一下寫爬蟲抓取靜態網站的全過程。而我們上面說的元字符都代表一定的規則和占據一定的字符。 遇到的需求 前段時間需要快速做個靜態展示頁面,要求是響應式和較美觀。由于時間較短,自己動手寫的話也有點麻煩,所以就打算上網找現成的。 中途找到了幾個頁面發現不錯,然后就開始思考怎么把頁面給下載下來。 由于之前還沒有了解過爬蟲,自然也就沒有想到可以用爬蟲來抓取網頁內容。所以我采取的辦...

    daydream 評論0 收藏0
  • javascript正則斷言的理解

    摘要:許久之后一些關于正則的黑科技才發現正則里也有較斷言的東東,好吧得了解了解這是什么。注括號是必須的,寫法有些語言并不完全支持,比如的正則并不支持后瞻斷言表達式,使用了會報錯的。 之前大三學習《編譯原理》的時候老師講了點叫斷言的東西,但是這門課壓根就沒聽懂過,所以一直找不到有價值的東西,好吧原諒我懶惰無知,理論不適合我,我只適合搬磚。許久之后一些關于正則的黑科技才發現正則里也有較斷言的東東...

    kun_jian 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<