python 的正規表示式指北

2022-03-09 21:48:35 字數 4086 閱讀 5288

>>> s = 'one1two2three3four4'

>>> pattern = re.compile(r'\d+')

>>> for v in pattern.split(s):

... print(v)

...one

twothree

four

pattern = re.compile(r'\d+')

for match in pattern.findall('one1two2three3four4'):

print(match)

pattern = re.compile(r'\d+')

for index,match in enumerate(pattern.finditer('one1two2three3four4')):

print(index,'--->',match.group())

>>> pattern = re.compile(r'([a-za-z]+)(\d)([bcd])',0)

>>> match = re.match(pattern,s)

>>> if match:

... for m in match.groups():

... print(m)

## 這裡是可以返回 234 的, 而把 search 替換為 match 則會報錯

import re

>>> s = 'abc234bdli23243afsdf'

>>> p1 = re.compile('(\d+)')

>>> match1 = re.search(p1,s)

>>> for m in match1.groups():

... print(m)

>>> s = 'ab   c   d e'

>>> str_list = re.split('\s+',s)

>>> for str in str_list:

... print(str)

...abcd

e

>>> email = '[email protected]'

>>> pattern = re.compile('([\w]+)(\.?)([\w]+)@([\w\.]+)')

>>> match = re.match(pattern,email)

>>> print(match.groups())

('bill', '.', 'gates', 'microsoft.com')

# [email protected] => tom paris

# [email protected] => bob

# -*- coding: utf-8 -*-

import re

def name_of_email(addr):

pattern = re.compile(r'<?([a-za-z\s]+)>?.*@[\w\.]+')

match = re.match(pattern,addr)

rs = none

if match:

rs = match.group(1)

return rs

print(name_of_email('[email protected]'))

# 測試:

assert name_of_email('[email protected]') == 'tom paris'

assert name_of_email('[email protected]') == 'tom'

print('ok')

import re

key = r"

"#這段是你要匹配的文字

p1 = r"(?<=)"#這是我們寫的正規表示式規則,你現在可以不理解啥意思

pattern1 = re.compile(p1)#我們在編譯這段正規表示式

matcher1 = re.search(pattern1,key)#在源文字中搜尋符合正規表示式的部分

print(matcher1.group(0))#列印出來

import re

key = r""

pattern = re.compile(r'(?<=).*?(?=)') # 綜合理解

match = re.search(pattern,key)

if match:

print(match.group(0))

import re

txt = 'abc13975041239ljlboou'

phone_pattern = re.compile(r'1[39|38|58]\d')

grp = re.findall(phone_pattern,txt)

grp2 = phone_pattern.findall(txt)

print(grp)

print(grp2)

import re

txt = 'abc13975041239ljlboou'

phone_pattern = re.compile(r'1[39|38|58]\d')

grp = re.findall(phone_pattern,txt)

grp2 = phone_pattern.findall(txt)

grp3 = phone_pattern.search(txt)

grp4 = phone_pattern.finditer(txt)

print(grp)

print(grp2)

print(grp3.group(0))

grp5 = [g for g in grp4]

print(grp5)

import re

contactinfo = 'doe, john: 555-1212'

pattern = re.compile(r'(?p[a-za-z]+),\s+(?p\w+):\s+([\d-]+)')

match = pattern.match(contactinfo)

if match:

print(match.group())

print(match.group(1))

print(match.group(2))

print(match.group(3))

僅起到分組 取別名作用 ?p

import re

contactinfo = 'doe, john: 555-1212'

pattern = re.compile(r'(?p[a-za-z]+),\s+(?p\w+):\s+(?p[\d-]+)')

match = pattern.match(contactinfo)

if match:

print(match.group())

print(match.group('first'))

print(match.group('second'))

print(match.group('phone'))

>>> contactinfo = 'doe, john: 555-1212'

>>> pattern = r'(?p\w+),\s+(?p\w+):\s+(?p[\d-]+)'

>>> match = re.match(pattern,contactinfo)

>>> match.groups()

('doe', 'john', '555-1212')

>>> pattern = r'([a-za-z]+),\s+([a-za-z]+):\s+([\d-]+)'

>>> match = re.match(pattern,contactinfo)

>>> match.groups()

('doe', 'john', '555-1212')

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

python正規表示式及使用正規表示式的例子

正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...