最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python正則表達(dá)式字符串處理方法示例(re庫(kù))

 更新時(shí)間:2026年07月08日 09:35:43   作者:F_leshy_  
正則表達(dá)式是通過(guò)符號(hào)系統(tǒng)描述文本模式并匹配文本的工具,下面這篇文章主要介紹了Python正則表達(dá)式字符串處理方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

正則表達(dá)式到底是什么?

簡(jiǎn)單來(lái)說(shuō),正則表達(dá)式就是一種字符串匹配的“規(guī)則表達(dá)式”。它能讓你從一大段文本里快速篩選、替換符合特定模式的內(nèi)容,比如驗(yàn)證手機(jī)號(hào)、提取郵箱、清洗數(shù)據(jù)等等。在 Python 里,我們只需要導(dǎo)入 re 庫(kù)就能使用它。

核心匹配函數(shù):match、search、findall

這三個(gè)函數(shù)是正則表達(dá)式的基礎(chǔ),也是最常用的工具,我們一個(gè)一個(gè)來(lái)看。

1. match():只在字符串開(kāi)頭匹配

• 它會(huì)從字符串的起始位置開(kāi)始檢查是否匹配規(guī)則

• 如果開(kāi)頭不匹配,直接返回 None

• 成功匹配則返回一個(gè)匹配對(duì)象,包含匹配的位置和內(nèi)容

import re
message = '張三、李四、王五、趙六'
result = re.match('張三',message)
print(result)

這個(gè)例子里,'張三' 正好在字符串開(kāi)頭,所以匹配成功。如果我們用 match('李四', message),就會(huì)返回 None,因?yàn)樗辉陂_(kāi)頭。

2. search():掃描整個(gè)字符串

• 它會(huì)掃描整個(gè)字符串,找到第一個(gè)符合規(guī)則的內(nèi)容

• 不管位置在哪里,只要找到一個(gè)就返回結(jié)果

• 同樣返回匹配對(duì)象或 None

import re
message = '張三、李四、王五、趙六'
result = re.search('王五',message)
print(result)

這里 '王五' 不在開(kāi)頭,但 search() 還是找到了它。這就是和 match() 最大的區(qū)別。

3. findall():找出所有匹配內(nèi)容

• 它會(huì)掃描整個(gè)字符串,把所有符合規(guī)則的內(nèi)容都找出來(lái)

• 返回一個(gè)列表,包含所有匹配到的子串

import re
message = '張三、李四、王五、趙六、王五'
result = re.findall('王五',message)
print(result)

正則表達(dá)式的語(yǔ)法規(guī)則

掌握了基本函數(shù),接下來(lái)就是學(xué)習(xí)如何寫(xiě)“規(guī)則”了。正則表達(dá)式有一套自己的語(yǔ)法,我們來(lái)看幾個(gè)最常用的。

1. 字符范圍

[a-z]匹配任意小寫(xiě)字母
[A-Z]匹配任意大寫(xiě)字母
[0-9]匹配任意數(shù)字
[a-zA-Z0-9]匹配任意字母或數(shù)字
import re
message = 'Python93,C87,Java63,C++88'
result_1 = re.search('[cn]',message)
result_2 = re.findall('[0-9]',message)
result_3 = re.findall('[cn][0-9]',message)
print(result_1,result_2,result_3)

2. 匹配次數(shù)

*匹配前面的表達(dá)式 0 次或多次
+匹配前面的表達(dá)式 1 次或多次
?匹配前面的表達(dá)式 0 次或 1 次
^匹配輸入行首
$匹配輸入行尾
{n}匹配前面的表達(dá)式正好 n 次
{n,}匹配前面的表達(dá)式至少 n 次
{n,m}匹配前面的表達(dá)式 n 到 m 次
import re
message = 'da2a7ddbre77yifed777t3fefd7777b'
result = re.findall('[a-z]*[0-9][a-z]',message)
print(result)

驗(yàn)證手機(jī)號(hào)碼的正確性:

import re
phone_num = input("請(qǐng)輸入您的手機(jī)號(hào)碼:")
result = re.findall('^1[0-9]{10}$',phone_num)
print(result)

驗(yàn)證QQ號(hào)碼是否合規(guī):

import re
QQ_num = input("請(qǐng)輸入您的QQ號(hào): ")
result = re.match('[1-9][0-9]{4,10}$',QQ_num)
print(result)

驗(yàn)證網(wǎng)站用戶名:

import re
use_name = input("請(qǐng)輸入您的用戶名: ")
result = re.findall('^[A-Za-z_]\w{7,}$',use_name)
print(result)

import re
use_name = input("請(qǐng)輸入您的用戶名: ")
result = re.findall('^[A-Za-z_]\w{7,}$',use_name)
print(result)

3. 特殊字符

\d

匹配一個(gè)數(shù)字類字符,等價(jià)于 [0-9]

\D匹配一個(gè)非數(shù)字類字符,等價(jià)于[^0-9]
\s匹配任意不可見(jiàn)字符,等價(jià)于[\f\n\r\t\v]
\S匹配任何可見(jiàn)字符,等價(jià)于[^\f\n\r\t\v]
\w匹配包括下劃線的任何單詞字符,等價(jià)于 [a-zA-Z0-9_]
\W匹配任何不包括下劃線的非單詞字符,等價(jià)于[^A-Za-z0-9_]
\b匹配一個(gè)單詞的邊界,即單詞與空格鄰接的字符
\B匹配非單詞邊界
\f匹配一個(gè)分頁(yè)符
\n匹配一個(gè)換行符
\r匹配一個(gè)回車符
\t匹配一個(gè)制表符
\v匹配一個(gè)垂直制表符
.匹配除\n和\r之外的任何單個(gè)字符
import re
message = 'verb very never every'
result = re.findall(r'\w+er\B',message)
print(result)

import re
message = 'verb very never every'
result = re.findall('.e',message)
print(result)

貪婪與非貪婪模式

貪婪模式:正則表達(dá)式默認(rèn)是貪婪模式,匹配形式是嘗試匹配盡可能多的字符,只要滿足正則表達(dá)式要求會(huì)匹配最多的字符。

非貪婪模式:匹配形式是嘗試匹配盡可能少字符,一旦滿足正則表達(dá)式要求就不再繼續(xù)匹配。

import re
message = 'ccc739134792hd'
result = re.findall('ccc\d+',message)
print(result)

import re
message = 'ccc739134792hd'
result = re.findall('ccc\d+?',message)
print(result)

或和組 

如果需要篩選出組合條件下的字符數(shù)據(jù),可以使用或。如果需要篩選后的某部分內(nèi)容,可以使用組。

1.或:用 | 表示,表示將兩個(gè)匹配條件進(jìn)行邏輯“或”(or)運(yùn)算。

import re
message = 'verb very never every'
result = re.findall('\w+evI\w+ry',message)
print(result)

2.組:用(表達(dá)式)表示,表示將()中的表達(dá)式定義為組,并且將匹配這個(gè)表達(dá)式的字符保存到一個(gè)臨時(shí)區(qū)域(一個(gè)正則表達(dá)式中最多可以保存9個(gè)組)。

import re
message = 'verb very never every'
result = re.findall("e(.+)(.)r",message)
print(result)

進(jìn)階功能:sub() 和 compile()

除了匹配,正則表達(dá)式還有兩個(gè)非常實(shí)用的功能。

1. sub():替換匹配內(nèi)容

這個(gè)函數(shù)可以把字符串中所有匹配到的內(nèi)容替換成新的字符串。

import re
content = 'dh9322hf9f934hfnf39d'
content = re.sub('\d','0',content)
print(content)

2. compile():預(yù)編譯正則表達(dá)式

如果你需要多次使用同一個(gè)正則表達(dá)式,可以先預(yù)編譯它,這樣能提高效率。

import re
contentl = '2020 12 15 12:00'
pattern = re.compile('\d{2}:\d{2}')
print(pattern.findall(contentl))

學(xué)習(xí)正則表達(dá)式的小建議

1. 從小例子開(kāi)始:不要一開(kāi)始就寫(xiě)復(fù)雜的正則,先從匹配單個(gè)字符、簡(jiǎn)單數(shù)字開(kāi)始,慢慢增加復(fù)雜度。

2. 多用在線工具測(cè)試:比如 Regex101,可以實(shí)時(shí)看到你的正則表達(dá)式匹配了什么,非常方便調(diào)試。

3. 別怕記不住:正則表達(dá)式的語(yǔ)法確實(shí)多,但常用的其實(shí)就那幾個(gè)。用得多了自然就記住了,記不住的時(shí)候隨時(shí)查文檔就好。

4. 先思考再動(dòng)手:在寫(xiě)正則之前,先想清楚你要匹配的內(nèi)容有什么規(guī)律,比如手機(jī)號(hào)的格式、郵箱的結(jié)構(gòu),然后再把這些規(guī)律轉(zhuǎn)化成正則表達(dá)式。
正則表達(dá)式就像一把瑞士軍刀,雖然看起來(lái)復(fù)雜,但一旦掌握了它,處理字符串的效率會(huì)大大提高。希望這篇文章能幫你邁出學(xué)習(xí)正則表達(dá)式的第一步。

總結(jié)

到此這篇關(guān)于Python正則表達(dá)式字符串處理方法的文章就介紹到這了,更多相關(guān)Python正則字符串處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python訪問(wèn)系統(tǒng)環(huán)境變量的方法

    python訪問(wèn)系統(tǒng)環(huán)境變量的方法

    這篇文章主要介紹了python訪問(wèn)系統(tǒng)環(huán)境變量的方法,涉及Python操作系統(tǒng)環(huán)境變量的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Django數(shù)據(jù)庫(kù)操作的實(shí)例(增刪改查)

    Django數(shù)據(jù)庫(kù)操作的實(shí)例(增刪改查)

    下面小編就為大家?guī)?lái)一篇Django數(shù)據(jù)庫(kù)操作的實(shí)例(增刪改查)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 基于Python繪制世界疫情地圖詳解

    基于Python繪制世界疫情地圖詳解

    這篇文章主要介紹了如何使用Python繪制世界疫情地圖,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 對(duì)python 生成拼接xml報(bào)文的示例詳解

    對(duì)python 生成拼接xml報(bào)文的示例詳解

    今天小編就為大家分享一篇對(duì)python 生成拼接xml報(bào)文的示例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Django中的事務(wù)ATOMIC_REQUESTS

    Django中的事務(wù)ATOMIC_REQUESTS

    這篇文章主要介紹了Django中的事務(wù)ATOMIC_REQUESTS使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程

    解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程

    這篇文章主要介紹了解析pip安裝第三方庫(kù)但PyCharm中卻無(wú)法識(shí)別的問(wèn)題及PyCharm安裝第三方庫(kù)的方法教程,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python 拷貝特定后綴名文件,并保留原始目錄結(jié)構(gòu)的實(shí)例

    python 拷貝特定后綴名文件,并保留原始目錄結(jié)構(gòu)的實(shí)例

    下面小編就為大家分享一篇python 拷貝特定后綴名文件,并保留原始目錄結(jié)構(gòu)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 詳解Scrapy Redis入門實(shí)戰(zhàn)

    詳解Scrapy Redis入門實(shí)戰(zhàn)

    這篇文章主要介紹了詳解Scrapy Redis入門實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python庫(kù)安裝加速之使用清華大學(xué)鏡像源的詳細(xì)指南

    Python庫(kù)安裝加速之使用清華大學(xué)鏡像源的詳細(xì)指南

    這篇文章主要介紹了如何通過(guò)清華大學(xué)鏡像源加速Python庫(kù)安裝,提供臨時(shí)指定和永久配置方法,并列舉阿里云、中科大、豆瓣等其他鏡像源,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • 詳解Python中enumerate函數(shù)的使用

    詳解Python中enumerate函數(shù)的使用

    Python?的?enumerate()?函數(shù)就像是一個(gè)神秘的黑箱,它具有非常有用的高級(jí)用法。本文就來(lái)為大家詳細(xì)講一下它的使用,需要的可以參考一下
    2022-08-08

最新評(píng)論

泗阳县| 依安县| 黄石市| 汉中市| 禹州市| 贺兰县| 阿城市| 常宁市| 定结县| 荣昌县| 永定县| 隆化县| 莎车县| 沈阳市| 甘南县| 资兴市| 邛崃市| 安图县| 保康县| 拜泉县| 垫江县| 德令哈市| 海林市| 崇文区| 百色市| 同江市| 鹤壁市| 房产| 上林县| 高阳县| 凌源市| 方正县| 阿拉善左旗| 托克逊县| 焉耆| 休宁县| 石狮市| 浙江省| 沁水县| 武功县| 青铜峡市|