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

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

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

正則表達式到底是什么?

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

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

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

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

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

• 如果開頭不匹配,直接返回 None

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

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

這個例子里,'張三' 正好在字符串開頭,所以匹配成功。如果我們用 match('李四', message),就會返回 None,因為它不在開頭。

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

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

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

• 同樣返回匹配對象或 None

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

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

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

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

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

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

正則表達式的語法規(guī)則

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

1. 字符范圍

[a-z]匹配任意小寫字母
[A-Z]匹配任意大寫字母
[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ù)

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

驗證手機號碼的正確性:

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

驗證QQ號碼是否合規(guī):

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

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

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

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

3. 特殊字符

\d

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

\D匹配一個非數(shù)字類字符,等價于[^0-9]
\s匹配任意不可見字符,等價于[\f\n\r\t\v]
\S匹配任何可見字符,等價于[^\f\n\r\t\v]
\w匹配包括下劃線的任何單詞字符,等價于 [a-zA-Z0-9_]
\W匹配任何不包括下劃線的非單詞字符,等價于[^A-Za-z0-9_]
\b匹配一個單詞的邊界,即單詞與空格鄰接的字符
\B匹配非單詞邊界
\f匹配一個分頁符
\n匹配一個換行符
\r匹配一個回車符
\t匹配一個制表符
\v匹配一個垂直制表符
.匹配除\n和\r之外的任何單個字符
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)

貪婪與非貪婪模式

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

非貪婪模式:匹配形式是嘗試匹配盡可能少字符,一旦滿足正則表達式要求就不再繼續(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.或:用 | 表示,表示將兩個匹配條件進行邏輯“或”(or)運算。

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

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

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

進階功能:sub() 和 compile()

除了匹配,正則表達式還有兩個非常實用的功能。

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    對python 生成拼接xml報文的示例詳解

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

    Django中的事務(wù)ATOMIC_REQUESTS

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

    解析pip安裝第三方庫但PyCharm中卻無法識別的問題及PyCharm安裝第三方庫的方法教程

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

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

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

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

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

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

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

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

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

最新評論

尤溪县| 迁安市| 柏乡县| 翼城县| 永吉县| 叶城县| 武冈市| 措美县| 红原县| 定结县| 延吉市| 城步| 卓资县| 安阳县| 大邑县| 金塔县| 阿克苏市| 秭归县| 定安县| 大新县| 三穗县| 安龙县| 六枝特区| 临武县| 五原县| 吐鲁番市| 那曲县| 台前县| 含山县| 中超| 乌拉特前旗| 远安县| 宁城县| 从化市| 平遥县| 田林县| 斗六市| 苏州市| 西畴县| 新昌县| 镇坪县|