亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

python中正則表達式的分組和字符串匹配

發布時間:2020-06-06 19:50:23 來源:億速云 閱讀:513 作者:Leah 欄目:大數據

這篇文章主要為大家分享python中正則表達式分組和字符串匹配的使用方法。文中還介紹了使用findall和finditer函數查找所有匹配正則表達式的字符串的方法,希望大家通過這篇文章能有所收獲。                                                          

# 分組
# 正則表達式中用一對圓括號括起來的部分被稱為一個分組
# '(\d\d\d)-(\d\d)'

import re

'''
1. 只有圓括號括起來的部分才算一組,如果正則表達式中既有被圓括號括起來的部分,
也有未被圓括號括起來的部分,那么只將圓括號括起來的部分算一組
2. group方法,如果不指定參數,會返回匹配的整個字符串,如果加參數,會返回指定
分組的字符串,組索引從1開始
3. groups方法,以元組形式返回匹配的所有分組
4. 分組的索引是從1開始的 
'''
# 分3組   3個數字-4個數字-2個小寫字母
m = re.match('(\d{3})-\d{4}-[a-z]{2}','123-4567-xy')
print(m)            # <re.Match object; span=(0, 11), match='123-4567-xy'>
print(m.groups())  # ('123',)
print(m.group())   # 123-4567-xy
print(m.group(1))  # 123
print('-------------')
m = re.match('(\d{3})-(\d{4})-[a-z]{2}','123-4567-xy')
print(m)                # <re.Match object; span=(0, 11), match='123-4567-xy'>
print(m.groups())   # ('123', '4567') 這個是返回一個元組 只要是分組里面的就放在元組里
print(m.group())   # 123-4567-xy
print(m.group(1)) # 123
print(m.group(2)) # 456
print('----------')
m = re.match('(\d{3})-(\d{4})-([a-z]{2})','123-4567-xy')
print(m)           # <re.Match object; span=(0, 11), match='123-4567-xy'>
print(m.groups())  # ('123', '4567', 'xy')
print(m.group())   # 123-4567-xy
print(m.group(1))  # 123
print(m.group(2))  # 456
print(m.group(3))  # xy
print('-----------')
m = re.match('(\d{3}-\d{4})-([a-z]{2})','123-4567-xy')
print(m)            # <re.Match object; span=(0, 11), match='123-4567-xy'>
print(m.groups())   # ('123-4567', 'xy')
print(m.group())    # 123-4567-xy
print(m.group(1))   # 123-4567
print(m.group(2))   # xy
# 匹配字符串的起始和結尾以及單詞邊界
'''
"^":匹配字符串的開始
"$":匹配字符串的結束
"\b":匹配單詞邊界

單詞邊界:是指空格或標點符號
" hello?"  這個左右2側都有邊界
" world0"  這個表示左側有邊界,右側沒有邊界
'''
import re
# "The"必須在字符串的開始才會搜索到
m = re.search('The', 'abc The.')
print(m)     # <re.Match object; span=(4, 7), match='The'>
m = re.search('^The', 'The bus.')
print(m)     # <re.Match object; span=(0, 3), match='The'>

# The必須在字符串的結尾才會搜索到
m = re.search('The$','The end.')
print(m)     # None
m = re.search('The$','end.The')
print(m)     # <re.Match object; span=(4, 7), match='The'>

print("---------------")
# 要求'this'左側必須有邊界才能搜索到
m = re.search(r'\bthis',"What's this?")    # 不使用r里面的\b就會給你轉義了
print(m)     # <re.Match object; span=(7, 11), match='this'>

m = re.search(r'\bthis',"this is a bus.")
print(m)      # <re.Match object; span=(0, 4), match='this'>

m = re.search(r'\bthis',"<this> is a bus.")
print(m)      # <re.Match object; span=(1, 5), match='this'>

m = re.search(r'\bthis',"1234this is a bus.")
print(m)     # None

m = re.search(r'\bthis\b',"What's this123")
print(m)    # None
# 使用findall和finditer函數查找所有匹配正則表達式的字符串

'''
findall:通過列表返回所有滿足條件的字符串,DOM    這是所有結果一起返回
finditer:將搜索結果通過一個迭代器返回,SAX      這個不是所有的返回
'''

import re
s = '12-a-abc54-a-xyz---78-A-ytr'
result = re.findall(r'\d\d-[a]-[a-z]{3}',s)
print(result)                                   # ['12-a-abc', '54-a-xyz']
result = re.findall(r'\d\d-[aA]-[a-z]{3}',s)   # 這一步里面的 [aA] 也是忽略大小寫
print(result)                               # ['12-a-abc', '54-a-xyz', '78-A-ytr'] 

result = re.findall(r'(\d\d-[aA])-([a-z]{3})',s)   # 分組返回 拆成一個組
print(result)                               # [('12-a', 'abc'), ('54-a', 'xyz'), ('78-A', 'ytr')]
s1 = '12-a-abc54-a-xYz---78-A-ytr'
result = re.findall(r'\d\d-a-[a-z]{3}',s1,re.I)   # 可以加第三個參數 第三個參數的位置 可以忽略大小寫 re.I 這個就是忽略大小寫
print(result)                               # ['12-a-abc', '54-a-xYz', '78-A-ytr']

it = re.finditer(r'(\d\d)-a-([a-z]{3})',s,re.I)
for result in it:
    print(result.group(),end=' <')
    groups = result.groups()
    for i in groups:
        print(i, end = ' ')
    print('>')

'''
12-a-abc <12 abc >
54-a-xyz <54 xyz >
78-A-ytr <78 ytr >

'''

以上就是python中正則表達式分組和字符串匹配的使用方法,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎關注億速云行業資訊!

向AI問一下細節

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

AI

吉木萨尔县| 巫溪县| 泸州市| 潮安县| 岳池县| 开封县| 定兴县| 古浪县| 灵宝市| 太仓市| 西吉县| 临湘市| 澜沧| 海林市| 乃东县| 五大连池市| 宜丰县| 体育| 句容市| 醴陵市| 云安县| 修武县| 凤翔县| 青川县| 岑巩县| 临沧市| 雅江县| 定安县| 白沙| 渝北区| 滁州市| 安新县| 盐亭县| 临安市| 谢通门县| 丁青县| 巨野县| 曲阳县| 青岛市| 天津市| 冷水江市|