91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

巧解正則表達式環視

發布時間:2020-07-19 20:58:43 來源:網絡 閱讀:422 作者:sshpp 欄目:開發技術

正則表達式匹配主要有兩種,匹配字符和匹配位置。環視我個人理解應該更像是匹配位置的。具體下文說到。下面先看一下環視的正則表達式書寫格式。

類型正則表達式匹配成功條件
肯定逆序環視(?<=expresion)子表達式能夠匹配左側文本
否定逆序環視(?<!expresion)子表達式不能匹配左側文本
肯定順序環視(?=expresion)子表達式能夠匹配右側文本
否定順序環視(?!expresion)字表達式不能匹配右側文本

 

 

 

 

本表摘自《精通正則表達式》p66

 

你要是覺得我會按照上面的表格來理解你就錯了,看完上面的表格我是一臉懵逼的,用的時候更加會一臉懵逼,然后把書本中p66頁前面的幾頁再翻了幾遍,發現一段很重要的話,順序環視會檢查子表達式能否匹配,但它只尋找能夠匹配的位置,而不會真正“占用”這些字符。好了,大家趕緊畫重點,考試要考,它只尋找能夠匹配的位置,也就是說環視只是匹配位置,而不是匹配文本,匹配位置最常見的就是^和$,指匹配文本的開頭和結尾,然后把上面的表格再轉換一下就是

 

類型正則表達式匹配成功條件
肯定逆序環視(?<=expresion)匹配子表達式右側的位置
否定逆序環視(?<!expresion)匹配非子表達式右側的位置
肯定順序環視(?=expresion)匹配子表達式左側的位置
否定順序環視(?!expresion)匹配非子表達式左側的位置

 

 

 

 

 

 單單看這個表還是有點一臉懵逼,那就來舉幾個栗子。玩正則表達式推薦你們一個利器,簡直能稱為神器,RegexBuddy,是《精通正則表達式》中介紹的。下面的例子我都是用他來完成。

1、(?=\d)

可以理解為匹配數字左邊的位置,然后把匹配到的位置替換為逗號,結果如圖,圖中左上角為正則表達式和替換字符串,右下角為匹配的文本和替換的結果

巧解正則表達式環視

看圖中右下角高亮的逗號,就是之前的匹配的位置。

2、(?!\b)

匹配非數字左邊的位置,然后把這些匹配的位置替換為逗號,結果如圖

巧解正則表達式環視

 對比1和2的兩個圖你就會發現(?=\b)和(?!\b)是互補的關系,兩個表達式匹配的位置合起來就是該匹配的文本的所有位置。

3、書中例子完善

《精通正則表達式》書中環視用了一個例子來貫通。該例子也比較常用,就是對于比較大的數值,我們一般在其中間加入逗號,這樣才能更容易看懂,如112347915如果寫成112,347,915就會比較清晰一點。

下面我將一步步說明如何把“今年的營業額為112347915.5465萬元”替換為“今年的營業額為112,347,915.5465萬元”

a、要替換的位置在數字的左邊

正則表達式:(?=\d)

替換結果:今年的營業額為,1,1,2,3,4,7,9,1,5.,5,4,6,5萬元

b、要替換的位置右邊至少有三個數字,也就是位置是在三個數字左邊

正則表達式:(?=\d\d\d)

替換結果:今年的營業額為,1,1,2,3,4,7,915.,5,465萬元

c、要匹配的位置左邊應該有數字,也就是該位置應該是在數字的右邊

正則表達式:(?<=\d)(?=\d\d\d)

替換結果:今年的營業額為1,1,2,3,4,7,915.5,465萬元

d、匹配位置的時候需要沒隔三個數字進行匹配,這時候就要用到量詞"+"了

正則表達式:(?<=\d)(?=(\d\d\d)+(?!\d))

替換結果:今年的營業額為112,347,915.5,465萬元

其中(?=(\d\d\d)+(?!\d))的意思就是指匹配一個位置,該位置是在(\d\d\d)+(?!\d)的左邊,也就是該位置是在一個非數字的左邊的每三個數字的左邊(囧,有點繞口)。

e、最后排除掉小數點后面的位置,也就是匹配的位置不能是在小數點之后的連續數字中。

正則表達式:(?<=\d)(?<!\.\d+)(?=(\d\d\d)+(?!\d))

替換結果:今年的營業額為112,347,915.5465萬元


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ss
AI

徐水县| 肃宁县| 景泰县| 临湘市| 北票市| 渭源县| 罗定市| 涿州市| 虞城县| 宜君县| 景东| 太湖县| 四川省| 清苑县| 龙泉市| 漯河市| 德昌县| 北京市| 屯留县| 永新县| 涡阳县| 庆云县| 永嘉县| 泰安市| 淮安市| 门源| 罗定市| 汉寿县| 安丘市| 盱眙县| 紫阳县| 梅州市| 农安县| 子长县| 张家港市| 临夏县| 蓬安县| 广宗县| 兴宁市| 莎车县| 怀安县|