好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 正則表達式常見的4種匹配模式小結

正則表達式常見的4種匹配模式小結

熱門標簽:怎么在高德地圖標注行走軌跡 百度地圖標注飯店位置怎么 深圳400電話辦理那家好 襄陽房產電銷機器人招商 清遠陽山400電話號碼如何申請 百度地圖標注名編輯 個性化地圖標注在線 施工地圖標注怎么做 安徽移動外呼系統

0.寫在前面

今天一起來學習下正則中的匹配模式,所謂的匹配模式,就是指正則中的一些 改變元字符匹配行為 的方式,比如匹配時不區分英文字母的大小寫。

還記得我們在第二篇文章中學過的貪婪模式、非貪婪模式和獨占模式嗎,這些模式會改變正則中量詞的匹配行為,今天來看一些和量詞無關的匹配模式,一共有4種,分別是不區分大小寫模式、點號通配模式、多行匹配模式、注釋模式。

1.不區分大小寫模式

顧名思義,不區分大小寫模式就是我想要匹配目標字符串中的Cat,我不關心是大貓CAT,還是小貓cat,只要給我匹配上就可以了。

模式修飾符是通過 (?模式標識) 的方式來表示的,我們只需要把模式修飾符放在對應的正則前面,就可以使用指定的模式了,

不區分大小寫的英文是 Case-Insensitive,模式標識用首字母的小寫來表示就是 (?i),上面提到的栗子正則可以這么寫 (?i)cat,看下:

上一篇文章中,我們學習了分組與引用,如果匹配兩個貓就是 (?i)(cat) \1

對應的 Python 代碼如下:

import re

result = re.findall(r"(?i)(cat) (\1)", "cat cat CAT Cat")
print(result)

輸出:[('cat', 'cat'), ('CAT', 'Cat')]

可以看到,前后兩個cat大小寫不一致,也可以匹配上,如果我們想要匹配前后大小寫一致的貓該怎么辦呢,可以在外面加上一層括號 ((?i)cat) \1,看下:

測試鏈接:https://regex101.com/r/tPXuGX/1

注意:在 Python 語言中,使用 re 庫調用上面的正則會報下面的異常,換成 regex 庫就可以,但是不能準確的匹配兩個大小寫一致的 cat。

DeprecationWarning: Flags not at the start of the expression

import regex

result = regex.findall(r"((?i)cat) (\1)", "cat cat CAT Cat")
print(result)

輸出:[('cat', 'cat'), ('CAT', 'Cat')]

2.點號通配模式

在第一篇文章中,我們學習了元字符的相關知識,還記的英文的點 . 代表什么含義嗎,它可以匹配任意字符,但是不能匹配換行。當我們需要匹配真正的任意字符時,可以使用 [\s\S] 或 [\d\D] 或 [\w\W] 等來表示。

但是這樣寫不夠優雅,所以正則提供了一種模式,讓英文的 . 能夠匹配上換行在內的所有字符,這種模式就叫做點號通配模式。

點號通配模式,在很多地方被稱為單行模式,英文表示為 Single Line,取其首字母,所以單行模式對應的修飾符是 (?s),舉個栗子:

3.多行匹配模式

在正則中 ^ 用于匹配整個目標字符串的開頭,$ 用戶匹配整個目標字符串的結尾:

如果我們想要讓表達式匹配上每行的開頭和結尾呢,多行匹配模式就上場了,多行的英文是 Multiline,所以多行模式對應的修飾符是 (?m),看下效果:

4.注釋模式

當我們寫了一大長串的表達式之后,當時可能只有你和上帝知道它什么意思,過了半年,就只有上帝知道它什么意思了。

注釋的英文是 Comment,所以注釋模式對應的修飾符是 (?#comment),注意沒有用首字母,還多了一個 # 號,拿我們之前寫的 IPv4 地址匹配正則舉個例:

復制代碼 代碼如下:

^(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?#comment IP地址第一個值)(?:\.(?:0|[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}(?#comment IP地址后三個值)$

在很多編程語言中也提供了 x 模式來書寫正則,也可以起到注釋的作用,以 Python 為例:

import re

regex = r'''(?mx)  # 使用多行模式和x模式
^          # 開頭
(\d{4})    # 年
(\d{2})    # 月
$          # 結尾
'''

result = re.findall(regex, '202006\n202106')
print(result)

輸出:[('2020', '06'), ('2021', '06')]

在 x 模式下,所有的換行和空格都會被忽略,如果要匹配的話,可以把換行和空格轉義,或者放在字符組中:

import re

regex = r'''(?mx)  # 使用多行模式和x模式
^          # 開頭
(\d{4})    # 年
[ ]        # 空格
(\d{2})    # 月
$          # 結尾
'''

result = re.findall(regex, '2020 06\n2021 06')
print(result)

輸出:[('2020', '06'), ('2021', '06')]

5.寫在最后

最后在總結下上面講到的內容:

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

到此這篇關于正則表達式常見的4種匹配模式小結的文章就介紹到這了,更多相關正則表達式 匹配模式內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 十分鐘上手正則表達式 上篇
  • 正則表達式分組與引用的使用
  • 正則表達式量詞與貪婪的使用詳解
  • 正則表達式那些讓人頭暈的元字符
  • 正則表達式之分組的回溯引用問題
  • 十分鐘上手正則表達式 下篇

標簽:黑河 中衛 南昌 駐馬店 臨夏 阜陽 延邊 欽州

巨人網絡通訊聲明:本文標題《正則表達式常見的4種匹配模式小結》,本文關鍵詞  正則,表達式,常見,的,4種,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《正則表達式常見的4種匹配模式小結》相關的同類信息!
  • 本頁收集關于正則表達式常見的4種匹配模式小結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 偷窥+性别+瘾+XXXXX| 秋霞理论影院福利院| 两男一女前后夹攻的正确姿势| 男人舔女人的逼视频| 看黄色的网址| 美女黄色片网站| 黑人狂躁日本妞无码免费视频| 欧美黄色片免费看| 小说肉h| 精品一区二区三区在线视频观看| 男人做一次爱能舒服多久| 欧一美一婬一伦一区二区三区自慰| 18岁禁看片| 临产h孕交边生边做| 欧美视频黄色| 国产欧美在线观看一区二区三区| 欧美一区二区另类有声小说| 美女在线观看| 男性gay鲜肉同性tv| 老板办公室办公桌跟沙发| 国产三级农村妇女系列| 片库网app官方下载安卓| 泰国三级寂寞的寡妇在线观看| 超污爽文99嗨文| 黑料网蘑菇视频17c在线观看| 乱系列人妻晓红| 久久99精品这里精品3| 小小的电影高清在线观看| 亚洲丰满少妇一级毛片| 少妇真人直播app免费视频| 摸咪咪小说| 宝贝乖乖禁欲阴鸷大佬爱疯了| 飘雪影视在线观看免费完整版中文| 日本????XX高清丝袜| 班长让我脱了她的内衣| 男女啪啪激烈无遮挡动态图| 国产精品视频免费一区二区三区| 一本久道视频一本久道AV| 色和尚愉人一级A片| 新金瓶梅2| 中文字幕版免费电影网站|