日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python与正则表达式(part1)--元字符

發布時間:2023/12/19 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python与正则表达式(part1)--元字符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本系列BLOG為鄙人學習python時的學習筆記。


文章目錄

    • 元字符使用
      • 普通字符
      • 或關系?(從此知識點開始就是特殊字符了)
      • 匹配單個字符
      • 匹配字符集
      • 匹配字符集反集
      • 匹配字符串開始位置
      • 匹配字符串的結束位置
      • 匹配字符重復
        • *
        • +
        • ?
        • {n}
        • {m,n}
      • 匹配任意(非)數字字符
      • 匹配任意(非)普通字符
      • 匹配任意(非)空字符
      • 匹配開頭結尾位置
      • 匹配(非)單詞的邊界位置


元字符使用

備注:個別編程語言對元字符的支持略有不同,比如某些元字符在個別編程語言中可能不支持。

普通字符

匹配規則:每個普通字符匹配其對應的字符

例子1

In : re.findall('ab',"abcdefabcd") Out: ['ab', 'ab']

注意!正則表達式在python中也可以匹配中文

例子2(支持UTF-8編碼格式的匹配)

In :re.findall('小黃', "小黃和大白") Out: ['小黃']

或關系?(從此知識點開始就是特殊字符了)

元字符: |
匹配規則: 匹配 | 兩側任意的正則表達式即可

例子1

In : re.findall('com|cn',"www.baidu.com/www.tmooc.cn") Out: ['com', 'cn']

匹配單個字符

元字符: .

匹配規則:匹配除換行外的任意一個字符

例子1

In : re.findall('小.兔',"小黃兔,大白兔,小兔") Out: ['小黃兔']

匹配字符集

元字符: [字符集]
匹配規則: 匹配字符集中的任意一個字符

表達形式:

[abc#!好] #表示 [] 中的任意一個字符[0-9],[a-z],[A-Z] #表示區間(0-9或a-z或A-Z)內的任意一個字符[_#?0-9a-z] #混合書寫,一般區間表達寫在單個字符后面

例子1

In : re.findall('[aeiou]',"How are you!") Out: ['o', 'a', 'e', 'o', 'u']

例子2

re.findall('[-0-9]', "hello A-007") ['-', '0', '0', '7']

匹配字符集反集

元字符:[^字符集]
匹配規則:匹配除了字符集以外的任意一個字符

例子1

In : re.findall('[^0-9]',"Use 007 port") Out: ['U', 's', 'e', ' ', ' ', 'p', 'o', 'r', 't']

例子2

re.findall('[^-a-z ]', "hello A-007") ['A', '0', '0', '7']

匹配字符串開始位置

元字符: ^
備注:這里的元字符和匹配字符集反集的元字符,雖然符號相同,但在正則表達式中的位置(該元字符必然放在最開頭)和所表達的含義都不同.

匹配規則:匹配目標字符串的開頭位置

例子1

In : re.findall('Jame',"hello, Jame") Out: ['Jame']In : re.findall('^Jame',"hello, Jame") Out: []In : re.findall('^Jame',"Jame,hello") Out: ['Jame']

匹配字符串的結束位置

元字符: $
匹配規則: 匹配目標字符串的結尾位置
規則技巧: ^ 和 $必然出現在正則表達式的開頭和結尾處。如果兩者同時出現,則中間的部分必須匹配整個目標字符串的全部內容。

例子1

In : re.findall('Jame$',"Hi,Jame") Out: ['Jame']

例子2

In :re.findall('Jame$',"Jame,Hi") Out: []In :re.findall('^Hi~Jame$',"Hi~Jame") Out: ['Hi~Jame']

匹配字符重復

*

元字符: *
匹配規則:匹配前面的字符出現0次或多次

例子1

In : re.findall('wo*',"wooooo~~w!") Out: ['wooooo', 'w']

例子2

In : print(re.findall('[A-Z][a-z]*',"Hello World, Hi Huang")) Out: ['Hello', 'World', 'Hi', 'Huang']

+

元字符:+
匹配規則: 匹配前面的字符出現1次或多次

例子1

In : re.findall('[A-Z][a-z]+',"Hello World") Out: ['Hello', 'World']

例子2

In :print(re.findall('[A-Z][a-z]*',"Hello World, A B C")) Out: ['Hello', 'World', 'A', 'B', 'C']In : print(re.findall('[A-Z][a-z]+',"Hello World, A B C")) Out: ['Hello', 'World']

?

元字符:?
匹配規則: 匹配前面的字符出現0次或1次

例子1(匹配整數)

In [28]: re.findall('-?[0-9]+',"Jame,age:18, -26") Out[28]: ['18', '-26']

{n}

元字符:{n}
匹配規則: 匹配前面的字符出現n次

例子1(匹配手機號碼)

In : re.findall('1[0-9]{10}',"Jame:13886495728") Out: ['13886495728']

{m,n}

元字符:{m,n}
匹配規則: 匹配前面的字符出現m-n次

例子1(匹配QQ號)

In : re.findall('[1-9][0-9]{5,10}',"Baron:1259296994") Out: ['1259296994']

匹配任意(非)數字字符

元字符: \d \D
匹配規則:\d 匹配任意數字(整數、小數、正數、負數)字符,\D 匹配任意非數字字符

例子1(匹配端口)

In : re.findall(\d{1,5}',"Mysql: 3306, http:80") Out: ['3306', '80']

例子2

In :data = ''' 雨量是用雨量器和雨量杯來計算的,雨量器是個圓柱形的開口筒, 筒口面積在我國多為314平方厘米(直徑20厘米)。 為了防止降水蒸發,中上部呈一漏洞型,下部放一儲水瓶。 為觀測方便與上述口徑配套有一特制量杯,雨量杯的口徑為4厘米, 因此每一毫米降水量在雨量杯上的長度為25毫米。為了連續記錄液態降水量, 水文氣象部門多使用虹吸式雨量計或翻斗式遙測雨量計。它們的記錄紙,不但記錄了總降水量, 還可以判定不同時段的降水量或降水強度。以在平面收集到的雨水深度表示, 準確程度至0.25毫米或0.01寸。有時亦會以升每平方米 (1 L m-2 = 1 mm)表示。 在氣象統計名詞上,雨量又可稱為降雨量,即一定時間內之降水累積量, 其中,若降水量若小於0.1公厘視為雨跡。 ''' In : print(re.findall('-?\d+\.?\d*', data))Out: ['314', '20', '4', '25', '0.25', '0.01', '1', '-2', '1', '0.1']

匹配任意(非)普通字符

元字符: \w \W
匹配規則: \w 匹配普通字符,\W 匹配非普通字符
說明: 普通字符指數字、字母、下劃線、漢字。

例子1

In : re.findall('\w+',"server_port = 8888") Out: ['server_port', '8888']

例子2

In :re.findall('\W+',"server_port = 8888") Out: [' = ']

匹配任意(非)空字符

元字符: \s \S
匹配規則: \s 匹配空字符,\S 匹配非空字符
說明:空字符指空格、\r 、\n 、\t 、\v 、\f 字符

例子1

In : re.findall('\w+\s+\w+',"hello world") Out: ['hello world']

例子2

In :print(re.findall('\S+', "TUTU-12~#: fhgj")) Out: ['TUTU-12~#:', 'fhgj']

匹配開頭結尾位置

元字符: \A \Z
匹配規則: \A 表示開頭位置(^),\Z 表示結尾位置($)

匹配(非)單詞的邊界位置

元字符: \b \B
匹配規則: \b 表示單詞邊界,\B 表示非單詞邊界
說明:單詞邊界指數字、字母(漢字)、下劃線[這些其實就是\w]與其他字符的交界位置。

例子1

In : print(re.findall('is', "This is XiaoHuang")) Out: ['is', 'is']In : print(re.findall(r'\bis\b', "This is XiaoHuang")) #這里的python字符串'\bis\b'前要加r Out: ['is'] #這里輸出的is,是第二個is(兩邊都有空格的is)

備注:為啥這里的python字符串前要加r,我們之后(下一個blog)再解釋

例子2

In : print(re.findall(r'\Bis\b', "This is XiaoHuang")) Out: ['is'] #這里輸出的is,是第一個is(只有右邊都有空格的is)

例子3(匹配大寫字母開頭的單詞)

In :print(re.findall(r'\b[A-Z]\w+',"This is iPython")) Out: ['This']

總結

以上是生活随笔為你收集整理的python与正则表达式(part1)--元字符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。