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

Python正則表達(dá)式和元字符詳解

 更新時間:2018年11月29日 08:33:09   作者:清潔工老板  
這篇文章主要介紹了Python正則表達(dá)式和元字符詳解,需要的朋友可以參考下

正則表達(dá)式

正則表達(dá)式是一種強(qiáng)大的字符串操作工具。它是一種領(lǐng)域特定語言 (DSL),不管是 Python 還是在大多數(shù)現(xiàn)代編程語言中都是作為庫存在。

它們主要面向兩種任務(wù):

- 驗(yàn)證字符串是否與模式匹配 (例如,字符串具有電子郵件地址的格式)。
- 在字符串中執(zhí)行替換(例如將所有大寫字母改成小寫字母)。

特定于領(lǐng)域的語言是高度專業(yè)化的迷你編程語言。

正則表達(dá)式是一個例子,SQL(用于數(shù)據(jù)庫操作)是另一個例子。

私有領(lǐng)域特定語言通常用于特定的工業(yè)目的。

Python 的正則表達(dá)式可以使用 re 模塊訪問,re 模塊是標(biāo)準(zhǔn)庫的一部分。

當(dāng)你定義一個正則表達(dá)式,可以使用 re.match 函數(shù)用于確定是否匹配字符串的開始部分。如果匹配則 match 函數(shù)返回表示匹配的對象,如果不匹配則返回 None。

為了避免在處理正則表達(dá)式時出現(xiàn)混淆,我們將 r 添加到字符串前綴。該字符串不需要轉(zhuǎn)義任何東西,使得正則表達(dá)式的使用變得更容易。

from re import match
msg = r"super"
if match(msg,"superman!"):
 print("You are True")
else:
 print("Occur an error! Foolish...")

運(yùn)行結(jié)果:

>>>
You are True
>>>

上面的例子檢查模式 super 是否匹配字符串,如果匹配,則打印 You are True。

這里的模式是一種簡單的單詞,但是有些字符串,在正則表達(dá)式中使用它們時會有特殊的意義。

匹配模式的其他函數(shù)有 re.match re.findall

re.match 在字符串中找到匹配。
re.findall 返回一個包含匹配的列表。

import re
string = "Hello python!Hello python!Hello python!"
pattern = r".python."
print(re.match(pattern,string))
print(re.findall(pattern,string))

運(yùn)行結(jié)果:

>>>
None
[' python!', ' python!', ' python!']
>>>

從上面的示例中,我們可以得出:

match() 函數(shù)是從內(nèi)容的第一個字符開始匹配,如果匹配不到,就得到None
findall() 函數(shù)從全部內(nèi)容匹配,如果有多個,找出所有匹配的

函數(shù) re.finditer 執(zhí)行與 re.findall 相同的操作,但它返回一個迭代器,而不是一個列表。

正則表達(dá)式的 search 函數(shù)返回一個對象,包含幾個更詳細(xì)的信息。

此方法包括返回字符串匹配的值,返回第一次匹配的開始和結(jié)束位置,以及以元組形式返回第一個匹配的開始和結(jié)束位置的 span 函數(shù)。

import re
string = "Hello python!Hello python!Hello python!"
pattern = r".python."
match = re.search(pattern,string)
if match:
 print(match.group())
 print(match.start())
 print(match.end())
 print(match.span())

運(yùn)行結(jié)果:

>>>
python!
5
13
(5, 13)
>>>

查找和替換

sub 是正則表達(dá)式里非常重要的函數(shù)。表達(dá)式:

re.sub(pattern, repl, string, count=0, flags=0)

pattern:表示正則表達(dá)式中的模式字符串;
repl:被替換的字符串(既可以是字符串,也可以是函數(shù));
string:要被處理的,要被替換的字符串;
count:匹配的次數(shù), 默認(rèn)是全部替換
flags:具體用處不詳

import re
string = "Hello python!Hello python!Hello python!"
pattern = r"python"
newstr = re.sub(pattern,"Java",string)
print(newstr)

運(yùn)行結(jié)果:

>>>
Hello Java!Hello Java!Hello Java!
>>>

元字符

元字符使正則表達(dá)式比普通字符串方法更強(qiáng)大。它們允許您創(chuàng)建正則表達(dá)式來表示諸如一個或多個數(shù)字的匹配。
如果要創(chuàng)建與元字符 (如 $) 匹配的正則表達(dá)式,元字符的存在就會產(chǎn)生問題。您可以通過在元字符前面添加反斜杠來轉(zhuǎn)義元字符。

但是這可能會導(dǎo)致問題,因?yàn)榉葱备茉谄胀?Python 字符串中也有轉(zhuǎn)義函數(shù)。這可能意味著可能將三個或四個反斜杠排成一行來執(zhí)行所有轉(zhuǎn)義操作。

為了避免這種情況,您可以使用一個原始字符串,它是一個普通字符串,前面有一個 "r" 前綴。

元字符點(diǎn),用來表示匹配除了換行外的任何字符。

import re
string1 = "Hello python!Hello python!Hello python!"
string2 = "pythan,1234587pythoi"
string3 = r"hello"
pattern = r"pyth.n"
match1 = re.search(pattern,string1)
match2 = re.search(pattern,string2)
match3 = re.search(pattern,string3)
if match1:
 print(match1.group())
 print("match 1")
if match2:
 print(match1.group())
 print("match 2")
if match3:
 print(match3.group())
 print("match 3")

運(yùn)行結(jié)果:

>>>
python
match 1
python
match 2
>>>

^ 表示匹配開始,$ 表示匹配結(jié)束。

import re
string1="python"
string2="pythan,1234587pythoi"
string3="hello"
pattern=r"^pyth.n$"
match1 = re.search(pattern,string1)
match2 = re.search(pattern,string2)
match3 = re.search(pattern,string3)
if match1:
 print(match1.group())
 print("match 1")
if match2:
 print(match1.group())
 print("match 2")
if match3:
 print(match3.group())
 print("match 3")

運(yùn)行結(jié)果:

>>>
python
match 1
>>>

匹配模式 "^pyth.n$" 意味著字符串應(yīng)該以 pyth 開頭,然后是一個除換行符以外的任何字符,并以 n 結(jié)尾。

總結(jié)

以上所述是小編給大家介紹的Python正則表達(dá)式和元字符,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 如何在Python中妥善使用進(jìn)度條詳解

    如何在Python中妥善使用進(jìn)度條詳解

    python的進(jìn)度條有很多第三方庫,有些做的比較炫酷,下面這篇文章主要給大家介紹了關(guān)于如何在Python中妥善使用進(jìn)度條的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 基于Python批量生成指定尺寸縮略圖代碼實(shí)例

    基于Python批量生成指定尺寸縮略圖代碼實(shí)例

    這篇文章主要介紹了基于Python批量生成指定尺寸縮略圖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python生成指定大小的文件兩種解決方案

    Python生成指定大小的文件兩種解決方案

    這篇文章主要介紹了Python生成指定大小的文件,這里提供兩種解決方案幫助python完成我們生成任意大小的文件,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于如何把Python對象存儲為文件的方法詳解

    關(guān)于如何把Python對象存儲為文件的方法詳解

    本文將給大家介紹如何把Python對象存儲為文件的方法,pickle可以用二進(jìn)制表示并讀寫python數(shù)據(jù),這個功能并不安全,如果把一個pickle暴露給別人,有被植入惡意程序的風(fēng)險,文中通過代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Python?合并/拆分Excel的實(shí)現(xiàn)示例

    Python?合并/拆分Excel的實(shí)現(xiàn)示例

    有時對于多個工作表需要進(jìn)行合并或拆分,以便進(jìn)行瀏覽總結(jié),本文主要介紹了Python?合并/拆分Excel的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • python統(tǒng)計cpu利用率的方法

    python統(tǒng)計cpu利用率的方法

    這篇文章主要介紹了python統(tǒng)計cpu利用率的方法,涉及Python中win32pdh模塊的使用技巧,需要的朋友可以參考下
    2015-06-06
  • Python使用pickle進(jìn)行序列化和反序列化的示例代碼

    Python使用pickle進(jìn)行序列化和反序列化的示例代碼

    這篇文章主要介紹了Python使用pickle進(jìn)行序列化和反序列化,幫助大家更好的理解和使用python的pickle庫,感興趣的朋友可以了解下
    2020-09-09
  • Python執(zhí)行ping操作的簡單方法

    Python執(zhí)行ping操作的簡單方法

    本文主要介紹了Python執(zhí)行ping操作的簡單方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 基于PyQt5實(shí)現(xiàn)圖轉(zhuǎn)文功能(示例代碼)

    基于PyQt5實(shí)現(xiàn)圖轉(zhuǎn)文功能(示例代碼)

    PyQt提供了一個設(shè)計良好的窗口控件集合,具有更方便的操作性。學(xué)過VB的同學(xué)會知道,相比與VB的使用,在界面設(shè)計上元素更豐富,這篇文章主要介紹了基于PyQt5完成的圖轉(zhuǎn)文功能,需要的朋友可以參考下
    2022-06-06
  • 利用python畫出折線圖

    利用python畫出折線圖

    這篇文章主要為大家詳細(xì)介紹了利用python畫出折線圖的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

江安县| 临江市| 辽阳县| 彭泽县| 湘阴县| 大埔县| 清水县| 馆陶县| 库尔勒市| 喜德县| 油尖旺区| 孝义市| 酉阳| 金川县| 嘉祥县| 广水市| 新蔡县| 乐至县| 进贤县| 镇宁| 南雄市| 宁河县| 丹江口市| 德化县| 白朗县| 抚顺县| 科技| 榆中县| 江西省| 韩城市| 凤城市| 东明县| 峨眉山市| 南京市| 仁化县| 中宁县| 阿城市| 通许县| 大英县| 吴旗县| 石河子市|