正規表示式

2021-09-29 03:54:19 字數 3916 閱讀 1967

1.元字元

(1)匹配邊界

^匹配行首

$匹配行尾

(2)重複次數

?0或1次

*>=0次

+>=1次

>=n次

>=n,<=m次

n次(3)單個字元

[a-z0-9a-z]

匹配括號中字元的任意乙個

\d數字

\w數字、字母、下劃線

\s空白字元(空格、\t、\n)

\b單詞的開始和結束

.匹配任意字元(除換行)

2.使用步驟

(1).將正規表示式編譯成乙個pattern物件

pattern = re.compile('正規表示式')

(2).通過pattern提供的方法進行查詢匹配

(3).通過使用match物件的方法獲取結果

3.match物件的方法:

match.group(0)----獲取匹配結果

match.group()----獲取匹配結果

match.span()----獲取匹配範圍

match.start()---匹配開始位置

match.end()---匹配結束位置

4.pattern物件的方法

(1)match方法:預設從頭開始匹配,只匹配一次,返回乙個match物件。

pattern.macth(

'要匹配的字串',必須指定,

start,匹配的開始位置(可選)

end,匹配的結束位置。(可選)

)

案例

import re

content = 'one123two456three'

### 將正規表示式轉換為python物件

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

### 使用轉換的規則去字串中匹配指定內容

result1 = pattern.match(content) ## none

### 指定匹配的範圍

result2 = pattern.match(content,3,10)

(2)serach方法:從任意位置匹配,只匹配一次,返回乙個match物件。

pattern.search(

'要匹配的字串',必須指定,

start,匹配的開始位置(可選)

end,匹配的結束位置。(可選)

)

案例

import re

content = 'one123two456three'

### 將匹配規則轉換為python物件

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

## search()進行匹配

result = pattern.search(content)

(3)findall:全文匹配,將匹配到的結果放到乙個list中返回給我們,多次匹配。

pattern.findall(

'要匹配的字串',必須指定,

start,匹配的開始位置(可選)

end,匹配的結束位置。(可選)

)

案例

import re

content = 'one123two456three'

### 將正規表示式轉換為python物件

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

### 使用轉換的規則去字串中匹配指定內容

### 返回的是乙個包含所有匹配結果的列表

result = pattern.findall(content)

(4)finditer:全文匹配,多次匹配,返回乙個包含匹配結果的迭代器。

pattern.finditer(

'要匹配的字串',必須指定,

start,匹配的開始位置(可選)

end,匹配的結束位置。(可選)

)

案例

import re

content = 'one123two456three'

### 將正規表示式轉換為python物件

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

### 使用轉換的規則去字串中匹配指定內容

### 返回的是乙個包含所有匹配結果的列表

result = pattern.findall(content)

for res in result:

print(res.group())

(5)sub:用指定的字串,替換正規表示式匹配的到目標字串的內容。

pattern.sub(

repl,替換成什麼。

content,替換什麼。

count,可以不指定,替換的次數。預設替換所有。

)'''

(1)repl可以是字串,也可以是函式。

當repl是函式的時候,這個函式有一下要求:

1,函式必須帶乙個引數,這個引數是乙個match物件。

def func(match):

'''對match物件的操作。

'''2.當在sub方法裡面傳入這個引數時,這個match物件其實就是用正則匹配到的每乙個match物件。

3.這個函式是有返回值的,返回值必須是乙個字串,將來是用這個字串進行替換目標字串的。

(2)函式匹配原理:

(1).首先根據正則在原串中進行匹配

(2).將匹配到的結果傳給函式作為引數

(3).對傳過來的內容進行修改

'''

案例

(1)repl是字串

content = 'hello 123,hello 456'

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

result1 = pattern.sub('hello world',content)

(2)repl是函式

content2 = 'zhangsan:3000,lisi:4000'

### 目的:使數字均加上20000

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

def add(match):

return str(int(match.group())+20000)

result = pattern.sub(add,content2)

print(result)

(6)split:切分字串,按照整個表示式所指定的內容切分。

str.split(',')

pattern.split(

'要切分的字串',

切分的次數。不指定就是預設,預設全部切割

)

5.正規表示式中的分組

分組時通過()來表示的,乙個括號就表示乙個分組。

分組的作用:

(1)篩選特定內容。

取分組內容可以通過match物件的group方法來去。

group(1)表示取正規表示式中第乙個括號的內容,依次類推。

import re

content = ''

pattern = re.compile(r''

pattern = re.compile(r'.*?"(.*?)".*?"(.*?)".*?')

match = pattern.search(content)

print(match)

print(match.group(1))

print(match.group(2))

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...