Python3正規表示式第四課

2021-08-20 10:47:01 字數 2786 閱讀 1967

re模組和compile物件均有的函式

obj = compile(pattern,flags = 0)

功能: 獲取正規表示式物件

引數:

pattern : 乙個字串形式的正規表示式

flags:  標識位,預設為0,可省略

返回值 : 正規表示式物件

注意:flags 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體引數為:

re.i

ignorecase

忽略字母大小寫

re.l

locale

表示特殊字符集 \w, \w, \b, \b, \s, \s 依賴於當前環境。

re.m

multiline

多行模式

re.s

dotall

即為' . '並且包括換行符在內的任意字元(' . '不包括換行符)

re.x

verbose

為了增加可讀性,忽略空格和' # '後面的注釋

#!/usr/bin/env python3

# coding =utf-8

'''正規表示式 re 模組

'''import re

s = '''hello world

hello kitty

nihao china

'''# 乙個字串形式的正規表示式

pattern = '''(?phello) #dog 組

\s+ #空字元

(world) #第二組用來匹配world

'''l = re.findall(pattern, s, re.x | re.i)

# re.i 忽略字母大小寫

# re.x 為了增加可讀性,忽略空格和' # '後面的注釋

print(l)

# [('hello', 'world')]

l = re.findall('.+', s, re.s)

# re.s即為' . '並且包括換行符在內的任意字元

# ' . '不包括換行符

print(l)

# ['hello world\nhello kitty\nnihao china\n']

l = re.findall('^nihao', s)

print(l)

# l = re.findall('^nihao', s, re.m)

# 多行模式,影響 ^ 和 $

print(l)

# ['nihao']

l = re.findall('h\w+', s, re.i)

# 忽略字母大小寫

print(l)

# ['hello', 'hello', 'hao', 'hina']

obj.findall(string,pos,endpos)

功能 : 通過正規表示式匹配字串

引數 : string  目標字串

pos  目標字串的匹配開始位置

endpos 目標字串的結束位置

返回值 : 匹配到的所有內容以列表返回

注意:   如果正規表示式有子組則只顯示子組匹配內容

#!/usr/bin/env python3

# coding =utf-8

import re

pattern = r'\s+'

# \s+ 匹配任意乙個或多個空字元

# 獲取正規表示式物件

obj = re.compile(pattern, flags=0)

# flags 標誌位 可選可忽略

l = obj.findall("abcdabcabab", 1, 9)

print(l)

#

obj.split(string)

功能 : 按照正規表示式切割目標字串

引數 : 目標字串

返回值 : 切割後的內容

# 匹配目標字串用(pattern = r'\s+')進行切割

l = obj.split('hello world hello kitty nihao china')

print(l)

# ['hello', 'world', 'hello', 'kitty', 'nihao', 'china']

obj.sub(replacestr,string,max)

功能: 替換正規表示式匹配到的內容

引數: replacestr 要替換的內容

string  目標字串

max   最多替換幾處

返回值 : 返回替換後的字串

# 替換目標字串('##')中匹配到的內容

s = obj.sub('##', 'hello world nihao china', 2)

print(s)

# hello##world##nihao china

subn(repl,string,count)

功能: 替換正規表示式匹配到的內容

引數: repl 要替換的內容

string  目標字串

count   最多替換幾處

返回值 : 返回替換後的字串和實際替換的個數

# 返回替換後的字串和實際替換的個數

s = obj.subn('##', 'hello world nihao china')

print(s)

# ('hello##world##nihao##china', 3)

Python3 第四課 變數

python是弱型別語言 變數無須宣告即可直接賦值 變數的資料型別可以動態改變 檢視變數型別 type 函式 type 變數名 列印出來 print type 變數名 print 函式可以同時輸出多個變數。語法格式 print value,sep end n file sys.stdout,flus...

Xshell學習第四課 grep與正規表示式

1 grep程式 linux下有文字處理三劍客 grep sed awk grep 文字行過濾工具 awk 報告生成器,作文本輸出格式化 grep包含三個命令 grep egrep fgrep,他們用來進行 行模式 pattern 匹配的 egrep grep e 使用擴充套件的正規表示式進行匹配 ...

Python自學之路 第四課

第4課 測試題 0.請問以下 會列印多少次 我愛魚c!while c print 我愛魚c 答 無限次請寫出與 10 cost 50 等價的表示式 答 10python3 中,一行可以書寫多個語句嗎?答 可以,需要用分號隔開 python3 中,乙個語句可以分成多行書寫嗎?答 可以 用 隔開或者用 ...