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

Python知識點詳解之正則表達式語法

 更新時間:2022年05月31日 10:03:11   作者:夢想橡皮擦  
正則表達式在搜索大型文本、電子郵件和文檔時非常有用,正則表達式也稱為"用于字符串匹配的編程語言",下面這篇文章主要給大家介紹了關于Python知識點之正則表達式語法的相關資料,需要的朋友可以參考下

Python 正則表達式是什么

學習 Python 正則表達式離不開 re 模塊,所以本篇博客會配合 re 模塊進行編寫。

re 庫是 Python 中處理正則表達式的標準庫,本篇博客介紹 re 庫的同時,會簡單介紹一下正則表達式語法, 如果想深入學習正則表達式,還需要好好下一番功夫。

怎么用

正則表達式語法

正則表達式語法由字符和操作符構成,初期階段掌握下述這些內(nèi)容即可。

操作符說明例子
.任何單個字符,極少不能匹配 
[]字符集,對單個字符給出取值范圍[abc] 表示匹配 a、b、c,[a-z] 表示 a 到 z 單個字符
[^]非字符集,對單個字符給出排除范圍[^abc] 表示匹配 非 a、非 b、非 c 的單個字符
*前一個字符 0 次或無限次擴展abc* 表示 ab、abc、abcc、abccc 等
+前一個字符 1 次或無限次擴展abc+ 表示 abc、abcc、abccc 等
?前一個字符 0 次或 1 次abc? 表示 ab、abc
|左右表達式任意一個abc|def 表示 abc 或者 def
{m}擴展前 1 個字符 m 次ab{2}c,表示 abbc
{m,n}擴展前 1 個字符 m 到 n 次ab{1,2}c,表示 abc、abbc
^匹配字符串開頭^abc 表示 abc 在字符串開頭
$匹配字符串結尾abc$ 表示 abc 在字符串結尾
()分組標記,內(nèi)部僅能使用 | 操作符(abc) 表示 abc,(a
\d數(shù)字,等價于 [0-9] 
\w字符,等價于 [A-Za-z0-9] 

以上表示僅僅為正則表達最基礎部分內(nèi)容,如果希望深入研究正則表達式,建議尋找更加全面的資料進行學習,本文只做藥引。

re 庫基本用法

re 庫主要函數(shù)如下:

  • 基礎函數(shù):compile;
  • 功能函數(shù):search、match、findall、split、finditer、sub。

在正式學習之前,先了解一下原生字符串。

在 Python 中,表示原生字符串,需要在字符串前面加上 r。 例如 my_str = 'i'am xiangpica' 在程序中會直接報錯, 如果希望字符串中 ' 可以正常運行,需要加上轉移字符 \,修改為 my_str = 'i\'am xiangpica'。 但這樣結合上文正則表達式中的操作符,就會出現(xiàn)問題,因為 \ 在正則表達式中是有真實含義的, 如果你使用 re 庫去匹配字符串中的 \,那需要使用 4 個反斜杠,為了避免這種情況出現(xiàn),引入了原生字符串概念。

# 不使用原生字符串的正則表達式  "\\\\"
# 使用原生字符串的正則表達式 r"\\"

在后文會有實際的應用。

接下來在學習一個案例,例如下述代碼:

my_str='C:\number'

print(my_str)
C:
umber

本段代碼的輸出效果如下,\n 被解析成了換行,如果想要屏蔽這種現(xiàn)象,使用 r 即可:

my_str=r'C:\number'

print(my_str)

輸出 C:\number。

re.search 函數(shù)

該函數(shù)用于,在字符串中搜索正則表達式匹配到的第一個位置的值,返回 match 對象。 函數(shù)原型如下:

re.search(pattern,string,flags=0)

需求:在字符串 夢想橡皮擦 good good 中匹配 橡皮擦。

import re
my_str='夢想橡皮擦 good good'
pattern = r'橡皮擦'

ret = re.search(pattern,my_str)
print(ret)

返回結果:<re.Match object; span=(2, 5), match='橡皮擦'>。

search 函數(shù)的第三個參數(shù) flags 表示正則表達式使用時的控制標記。

  • re.I,re.IGNORECASE:忽略正則表達式的大小寫;
  • re.M,re.MULTILINE:正則表達式中的 ^ 操作符能夠?qū)⒔o定字符串的每行當做匹配的開始;
  • re.S,re.DOTALL:正則表達式中的 . 操作符能夠匹配所有字符。

最后將匹配到的字符串進行輸出,使用下述代碼即可實現(xiàn)。

import re
my_str = '夢想橡皮擦 good good'
pattern = r'橡皮擦'

ret = re.search(pattern, my_str)
if ret:
    print(ret.group(0))

re.match 函數(shù)

該函數(shù)用于在目標字符串開始位置去匹配正則表達式,返回 match 對象,未匹配成功返回 None,函數(shù)原型如下:

re.match(pattern,string,flags=0)

一定要注意是目標字符串開始位置。

import re
my_str = '夢想橡皮擦 good good'
pattern = r'夢' # 匹配到數(shù)據(jù)
pattern = r'good' # 匹配不到數(shù)據(jù)

ret = re.match(pattern, my_str)
if ret:
    print(ret.group(0))

re.match 和 re.search 方法都是一次最多返回一個匹配對象,如果希望返回多個值, 可以通過在 pattern 里加括號構造匹配組返回多個字符串。

re.findall 函數(shù)

該函數(shù)用于搜索字符串,以列表格式返回全部匹配到的字符串,函數(shù)原型如下:

re.findall(pattern,string,flags=0)

測試代碼如下:

import re
my_str = '夢想橡皮擦 good good'
pattern = r'good'
ret = re.findall(pattern, my_str)
print(ret)

re.split 函數(shù)

該函數(shù)將一個字符串按照正則表達式匹配結果進行分割,返回一個列表。 函數(shù)原型如下:

re.split(pattern, string, maxsplit=0, flags=0)

re.split 函數(shù)進行分割的時候,如果正則表達式匹配到的字符恰好在字符串開頭或者結尾, 返回分割后的字符串列表首尾都多了空格,需要手動去除,例如下述代碼:

import re
my_str = '1夢想橡皮擦1good1good1'

pattern = r'\d'

ret = re.split(pattern, my_str)

print(ret)

運行結果:

['', '夢想橡皮擦', 'good', 'good', '']

切換為中間的內(nèi)容,則能正確的分割字符串。

import re
my_str = '1夢想橡皮擦1good1good1'

pattern = r'good'

ret = re.split(pattern, my_str)

print(ret)

如果在 pattern 中捕獲到括號,那括號中匹配到的結果也會在返回的列表中。

import re
my_str = '1夢想橡皮擦1good1good1'

pattern = r'(good)'

ret = re.split(pattern, my_str)

print(ret)

運行結果,你可以對比帶括號和不帶括號的區(qū)別進行學習:

['1夢想橡皮擦1', 'good', '1', 'good', '1']

maxsplit 參數(shù)表示最多進行分割次數(shù), 剩下的字符全部返回到列表的最后一個元素, 例如設置匹配 1 次,得到的結果是 ['1夢想橡皮擦1', '1good1']。

re.finditer 函數(shù)

搜索字符串,并返回一個匹配結果的迭代器,每個迭代元素都是 match 對象。 函數(shù)原型如下:

re.finditer(pattern,string,flags=0)

測試代碼如下:

import re
my_str = '1夢想橡皮擦1good1good1'

pattern = r'good'

# ret = re.split(pattern, my_str,maxsplit=1)
ret =re.finditer(pattern, my_str)
print(ret)

re.sub 函數(shù)

在一個字符串中替換被正則表達式匹配到的字符串,返回替換后的字符串, 函數(shù)原型如下:

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

其中 repl 參數(shù)是替換匹配字符串的字符串,count 參數(shù)是匹配的最大替換次數(shù)。

import re
my_str = '1夢想橡皮擦1good1good1'

pattern = r'good'

ret = re.sub(pattern, "nice", my_str)
print(ret)

運行之后,得到替換之后的字符串:

1夢想橡皮擦1nice1nice1

re 庫其它函數(shù)

其它比較常見的函數(shù)有:re.fullmatch(),re.subn(),re.escape(), 更多內(nèi)容可以查閱 官方文檔,獲取一手資料。

擴展知識

使用 re 庫匹配字符串之后,會返回 match 對象,該對象具備以下屬性和方法。

你可以順著這條線繼續(xù)學習下去。

總結

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

相關文章

  • Python?常見的配置文件寫法梳理匯總

    Python?常見的配置文件寫法梳理匯總

    這篇文章主要介紹了Python?常見的配置文件寫法梳理匯總,文章圍繞主題展開主題相關梳理總結,需要的朋友可以參考一下
    2022-07-07
  • R vs. Python 數(shù)據(jù)分析中誰與爭鋒?

    R vs. Python 數(shù)據(jù)分析中誰與爭鋒?

    R和Python兩者誰更適合數(shù)據(jù)分析領域?在某些特定情況下誰會更有優(yōu)勢?還是一個天生在各方面都比另一個更好?
    2017-10-10
  • 解決Tensorboard 不顯示計算圖graph的問題

    解決Tensorboard 不顯示計算圖graph的問題

    今天小編就為大家分享一篇解決Tensorboard 不顯示計算圖graph的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • PyTorch實現(xiàn)圖像識別實戰(zhàn)指南

    PyTorch實現(xiàn)圖像識別實戰(zhàn)指南

    圖像識別是從給定圖像中提取有意義的信息(例如圖像內(nèi)容)的過程,下面這篇文章主要給大家介紹了關于PyTorch實現(xiàn)圖像識別的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • 利用python合并csv文件的方式實例

    利用python合并csv文件的方式實例

    由于項目取數(shù)需要,要將兩個不同的csv文件合并到一個文件中,所以下面這篇文章主要給大家介紹了關于利用python合并csv文件的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Python pass函數(shù)實例用法

    Python pass函數(shù)實例用法

    在本篇文章里小編給大家整理了一篇關于Python pass函數(shù)實例用法,有興趣的朋友們可以學習下。
    2021-03-03
  • Python中sorted()函數(shù)的強大排序技術實例探索

    Python中sorted()函數(shù)的強大排序技術實例探索

    排序在編程中是一個基本且重要的操作,而Python的sorted()函數(shù)則為我們提供了強大的排序能力,在本篇文章中,我們將深入研究不同排序算法、sorted()?函數(shù)的靈活性,以及各種排序場景下的最佳實踐
    2024-01-01
  • Python對象屬性自動更新操作示例

    Python對象屬性自動更新操作示例

    這篇文章主要介紹了Python對象屬性自動更新操作,結合實例形式對比分析了Python對象屬性自動更新的原理,并改進了屬性互聯(lián)操作實現(xiàn)方法,需要的朋友可以參考下
    2018-06-06
  • PyTorch一小時掌握之神經(jīng)網(wǎng)絡氣溫預測篇

    PyTorch一小時掌握之神經(jīng)網(wǎng)絡氣溫預測篇

    這篇文章主要介紹了PyTorch一小時掌握之神經(jīng)網(wǎng)絡氣溫預測篇,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • pythotn條件分支與循環(huán)詳解(2)

    pythotn條件分支與循環(huán)詳解(2)

    這篇文章主要介紹了Python條件分支和循環(huán)用法,結合實例形式較為詳細的分析了Python邏輯運算操作符,條件分支語句,循環(huán)語句等功能與基本用法,需要的朋友可以參考下
    2021-08-08

最新評論

古蔺县| 左权县| 略阳县| 斗六市| 平和县| 江津市| 镇赉县| 宜宾市| 田阳县| 旬邑县| 神池县| 鄂托克前旗| 开鲁县| 临海市| 安溪县| 兴安盟| 布拖县| 荔波县| 白河县| 彭阳县| 大关县| 柘荣县| 潞城市| 新源县| 黔江区| 敦化市| 沽源县| 洛川县| 安化县| 将乐县| 苗栗市| 剑阁县| 宕昌县| 鲁山县| 柏乡县| 大英县| 垣曲县| 进贤县| 禄丰县| 澎湖县| 崇文区|