一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - 正則表達(dá)式 - 正則表達(dá)式分組與引用的使用

正則表達(dá)式分組與引用的使用

2021-11-16 15:45容華謝后 正則表達(dá)式

今天我們來講下正則中的分組與引用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

0.寫在前面

今天我們來講下正則中的分組與引用,其實在第一篇文章中,我們在實戰(zhàn)環(huán)節(jié)就已經(jīng)用到分組這個功能了,回顧下 ipv4 地址的正則表達(dá)式:

 

復(fù)制代碼 代碼如下:

^([1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.(0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

 

可以簡寫下:

 

復(fù)制代碼 代碼如下:

^(條件1)(\.(條件2)){3}$

 

可以看到在表達(dá)式中出現(xiàn)了幾對括號,為什么要用括號把表達(dá)式括起來,這些括號有什么作用呢,我們一起來看下。

1.分組與編號

括號在正則中可以用于分組,被括號括起來的部分可以稱為子表達(dá)式,會被保存成一個子組。

舉個栗子,有一個日期時間 2021-06-01 13:14:21,我們想要提取出其中的日期和時間,就要用括號對日期和時間進(jìn)行分組,如下圖所示:

正則表達(dá)式分組與引用的使用

可以看到圖中有兩個分組,日期分組是第1個,時間分組是第2個,我們以左括號的位置,來表示分組的標(biāo)號,從1開始,第幾個左括號,就是第幾個分組。

上面的栗子,我們再分的細(xì)一點,我們要分別提取其中的年、月、日,時、分、秒,如下圖所示:

正則表達(dá)式分組與引用的使用

可以看到日期的分組編號是 1,時間分組的編號是 5,年月日的分組編號分別是 2,3,4,時分秒的分組編號分別是 6,7,8。

2.不保存子組

分組是有一定的性能消耗的,在有些情況下,我們只是單純的想要分組,后續(xù)并不想使用它,就可以在左括號的后面加上 ?: 表示不保存子組。

比如,需要是使用正則匹配目標(biāo)字符串中的15位或18位數(shù)字:

 

功能 正則 示例
保存子組 (正則) \d{15}(\d{3})?
不保存子組 (?:正則) \d{15}(?:\d{3})?

 

正則表達(dá)式分組與引用的使用

正則表達(dá)式分組與引用的使用

我們之前講過的 ipv4 正則表示就可以優(yōu)化下:

 

復(fù)制代碼 代碼如下:

^(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

 

正則表達(dá)式分組與引用的使用

3.分組引用

上面講完了分組,我們來看下如何來引用分組,大部分語言都是用 反斜杠 + 編號 的方式,個別的比如 javascript語言,使用的是 美元符號 + 編號 的方式:

 

編程語言 查找時引用方式 替換時引用方式
python \number 如 \1 \number 如 \1
go 官方包不支持 官方包不支持
java \number 如 \1 $number 如 $1
javascript $number 如 $1 $number 如 $1
php \number 如 \1 \number 如 \1
ruby \number 如 \1 \number 如 \1

 

4.查找與替換

 查找

到這里我們已經(jīng)學(xué)完了分組與引用的知識,一起來實踐下,有這樣一個需求,在一個目標(biāo)字符串中,查找兩個重復(fù)出現(xiàn)的單詞。

還沒有學(xué)到單詞邊界,我們先用 \w{2,} 來表示出現(xiàn)的單詞,重復(fù)的單詞就是 (\w{2,} \1),看下結(jié)果:

正則表達(dá)式分組與引用的使用

替換

上面的內(nèi)容,我們講到了日期的分組,來替換下:

正則表達(dá)式分組與引用的使用

對應(yīng)的 python 代碼如下:

?
1
2
3
4
5
6
7
8
9
import re
 
test_str = "2021-06-01 13:14:21"
regex = r"((\d{4})-(\d{2})-(\d{2})) ((\d{2}):(\d{2}):(\d{2}))"
subst = r"\2年\3月\4日 \6時\7分\8秒"
result = re.sub(regex, subst, test_str)
print(result)
 
輸出:20210601131421

5.在文本編輯器中使用

正則表達(dá)式不僅可以在代碼中使用,在文本編輯器中也是比較常用的,以 sublime text 3 舉例來講下正則的查找與替換,學(xué)完之后,會讓你的工作事半功倍。

點擊 find -> find 選項,或者使用快捷鍵 ctrl + f 可以喚起查找功能:

正則表達(dá)式分組與引用的使用

點擊 find -> replace 選項,或者使用快捷鍵 ctrl + h 可以喚起替換功能:

正則表達(dá)式分組與引用的使用

查找

我們來實現(xiàn)一個查找郵箱的功能,此處的郵件正則只是簡單演示使用,當(dāng)點擊 find all 按鈕后,可以看到郵箱都被找到了,此時如果點擊 ctrl + c 復(fù)制,可以把找到的郵箱單獨粘貼出來:

正則表達(dá)式分組與引用的使用

替換

演示下我們上面講過的替換例子:

正則表達(dá)式分組與引用的使用

怎么樣,是不是很方便,幾乎所有的主流編輯器都是支持正則的,學(xué)會了正則,對我們的工作幫助還是挺大的。

6.寫在最后

最后在總結(jié)下上面講到的內(nèi)容:

正則表達(dá)式分組與引用的使用

正則表達(dá)式在線校驗工具:https://regex101.com/

到此這篇關(guān)于正則表達(dá)式分組與引用的使用的文章就介紹到這了,更多相關(guān)正則表達(dá)式 分組與引用內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/kong_gu_you_lan/article/details/118888392

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 女教师的一级毛片 | 99re思思 | 美女逼逼喷水 | 国产在线视频第一页 | 国产一区二区播放 | www.久久99 | 水蜜桃一二二区视在线 | а天堂中文最新版在线官网视频 | 色婷婷综合和线在线 | 免费视频专区一国产盗摄 | 欧洲美女bbbxxxxxx | 国产大胆歌舞团网站 | 色戒完整版2小时38分钟 | 国产成人综合久久 | 无人区在线观看免费视频国语 | 体检小说| lilisha李丽莎喷水大胆在线 | 美女扒开屁股让男人进去 | 国产精品久久久久久搜索 | 欧美日韩人成在线观看 | 成人影院www在线观看 | 国产小视频网站 | 摸逼网 | 亚洲日本在线观看网址 | 久久综合视频网站 | 成人在线播放视频 | 久久视频这只精品99re6 | 日韩精品高清自在线 | 国产精品美女久久久久 | 关晓彤被调教出奶水的视频 | 天海翼最新作品 | 欧美高清乌克兰精品另类 | 国产日韩综合 | 白丝爆动漫羞羞动漫软件 | 52zfl宅福利yxpjw | 美女扒下内裤让男人桶的图片 | 大胆人gogo888体艺术在线 | 亚洲国产成人久久综合一区77 | 99夜色| 玩50岁四川熟女大白屁股直播 | 日本搜子同屋的日子2国语 日本爽p大片免费观看 |