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

Python基礎(chǔ)教程之正則表達(dá)式基本語法以及re模塊

 更新時(shí)間:2016年03月25日 10:20:43   作者:博覽群書1989  
正則表達(dá)式是可以匹配文本片段的模式,今天的Python就跟大家一起討論一下python中的re模塊,python re模塊感興趣的朋友一起學(xué)習(xí)吧

什么是正則:

正則表達(dá)式是可以匹配文本片段的模式。

正則表達(dá)式'Python'可以匹配'python'

正則是個(gè)很牛逼的東西,python中當(dāng)然也不會(huì)缺少。

所以今天的Python就跟大家一起討論一下python中的re模塊。

re模塊包含對(duì)正則表達(dá)式的支持。

通配符

.表示匹配任何字符:

‘.ython'可以匹配'python'和'fython'

對(duì)特殊字符進(jìn)行轉(zhuǎn)義:

‘python\.org'匹配‘python.org'

字符集

‘[pj]ython'能夠匹配'python'和'jython'

反轉(zhuǎn)字符集

‘[^abc]'可以匹配除了abc之外的任何字符

選擇符

使用管道符號(hào)|

可選項(xiàng)

加上問好就變?yōu)榱丝蛇x項(xiàng):

r'(http://)?(www.)?python.org‘只能匹配下面幾種:

'http://www.python.org'
'http://python.org'
'www.python.org'
'python.org'

重復(fù)子模式

*:允許模式重復(fù)0次或多次
+:允許模式重復(fù)1次或多次
{m, n}允許模式重復(fù)m-n次

當(dāng)然,正則語法規(guī)則很多,遠(yuǎn)不止上面的這些。但是我們只能點(diǎn)到為止了,因?yàn)檫@篇博客的目的是介紹Python中的模塊,re模塊。

re 模塊使 Python 語言擁有全部的正則表達(dá)式功能。

compile 函數(shù)根據(jù)一個(gè)模式字符串和可選的標(biāo)志參數(shù)生成一個(gè)正則表達(dá)式對(duì)象。該對(duì)象擁有一系列方法用于正則表達(dá)式匹配和替換。

re 模塊也提供了與這些方法功能完全一致的函數(shù),這些函數(shù)使用一個(gè)模式字符串做為它們的第一個(gè)參數(shù)。

re中重要的函數(shù):

compile(pattern[, flags]) 根據(jù)包含正則表達(dá)式的字符串創(chuàng)建模式對(duì)象

search(pattern, string[, flags]) 在字符串中尋找模式

match(pattern, string[, flags]) 在字符串的開始處匹配模式

split(pattern, string[, maxsplit=0]) 根據(jù)匹配項(xiàng)分割字符串

findall(pattern, string) 列出字符串中模式的所有匹配項(xiàng)

sub(pat, rep, string[, count=0]) 字符串中所有pat的匹配項(xiàng)用repl替換

escape(string) 將字符串中所有特殊表達(dá)式字符轉(zhuǎn)義

下面就進(jìn)行簡(jiǎn)單的應(yīng)用:

使用match

import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配

使用search

import re
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配

這時(shí)候需要停一下,match和search的區(qū)別呢?

看看結(jié)果先:

match例子中結(jié)果:

(0, 3)
None

search例子中結(jié)果:

(0, 3)
(11, 14)

match()函數(shù)只檢測(cè)RE是不是在string的開始位置匹配,search()會(huì)掃描整個(gè)string查找匹配;
也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none。

search()會(huì)掃描整個(gè)字符串并返回第一個(gè)成功的匹配。

使用sub

Python 的re模塊提供了re.sub用于替換字符串中的匹配項(xiàng)。

#!/usr/bin/python
import re
phone = "2004-959-559 # This is Phone Number"
# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num
# Remove anything other than digits
num = re.sub(r'\D', "", phone) 
print "Phone Num : ", num

結(jié)果:

Phone Num : 2004-959-559
Phone Num : 2004959559

最后獻(xiàn)上菊花:

^ 匹配字符串的開頭
$ 匹配字符串的末尾。
. 匹配任意字符,除了換行符,當(dāng)re.DOTALL標(biāo)記被指定時(shí),則可以匹配包括換行符的任意字符。
[...] 用來表示一組字符,單獨(dú)列出:[amk] 匹配 'a','m'或'k'
[^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re* 匹配0個(gè)或多個(gè)的表達(dá)式。
re+ 匹配1個(gè)或多個(gè)的表達(dá)式。
re? 匹配0個(gè)或1個(gè)由前面的正則表達(dá)式定義的片段,非貪婪方式
re{ n}
re{ n,} 精確匹配n個(gè)前面表達(dá)式。
re{ n, m} 匹配 n 到 m 次由前面的正則表達(dá)式定義的片段,貪婪方式
a| b 匹配a或b
(re) G匹配括號(hào)內(nèi)的表達(dá)式,也表示一個(gè)組
(?imx) 正則表達(dá)式包含三種可選標(biāo)志:i, m, 或 x 。只影響括號(hào)中的區(qū)域。
(?-imx) 正則表達(dá)式關(guān)閉 i, m, 或 x 可選標(biāo)志。只影響括號(hào)中的區(qū)域。
(?: re) 類似 (...), 但是不表示一個(gè)組
(?imx: re) 在括號(hào)中使用i, m, 或 x 可選標(biāo)志
(?-imx: re) 在括號(hào)中不使用i, m, 或 x 可選標(biāo)志
(?#...) 注釋.
(?= re) 前向肯定界定符。如果所含正則表達(dá)式,以 ... 表示,在當(dāng)前位置成功匹配時(shí)成功,否則失敗。但一旦所含表達(dá)式已經(jīng)嘗試,匹配引擎根本沒有提高;模式的剩余部分還要嘗試界定符的右邊。
(?! re) 前向否定界定符。與肯定界定符相反;當(dāng)所含表達(dá)式不能在字符串當(dāng)前位置匹配時(shí)成功
(?> re) 匹配的獨(dú)立模式,省去回溯。
\w 匹配字母數(shù)字
\W 匹配非字母數(shù)字
\s 匹配任意空白字符,等價(jià)于 [\t\n\r\f].
\S 匹配任意非空字符
\d 匹配任意數(shù)字,等價(jià)于 [0-9].
\D 匹配任意非數(shù)字
\A 匹配字符串開始
\Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串。c
\z 匹配字符串結(jié)束
\G 匹配最后匹配完成的位置。
\b 匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\n, \t, 等. 匹配一個(gè)換行符。匹配一個(gè)制表符。等
\1...\9 匹配第n個(gè)分組的子表達(dá)式。
\10 匹配第n個(gè)分組的子表達(dá)式,如果它經(jīng)匹配。否則指的是八進(jìn)制字符碼的表達(dá)式。

re的正則表達(dá)式語法

   正則表達(dá)式語法表如下:

語法 意義 說明
"." 任意字符
"^" 字符串開始 '^hello'匹配'helloworld'而不匹配'aaaahellobbb'
"$" 字符串結(jié)尾 與上同理
"*" 
0 個(gè)或多個(gè)字符(貪婪匹配)
<*>匹配
"+"
1 個(gè)或多個(gè)字符(貪婪匹配
與上同理
"?"
0 個(gè)或多個(gè)字符(貪婪匹配
與上同理
*?,+?,??
以上三個(gè)取第一個(gè)匹配結(jié)果(非貪婪匹配 <*>匹配

相關(guān)文章

  • Pandas之MultiIndex對(duì)象的示例詳解

    Pandas之MultiIndex對(duì)象的示例詳解

    這篇文章主要介紹了Pandas之MultiIndex對(duì)象的示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 淺談python爬蟲使用Selenium模擬瀏覽器行為

    淺談python爬蟲使用Selenium模擬瀏覽器行為

    這篇文章主要介紹了淺談python爬蟲使用Selenium模擬瀏覽器行為,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python2.5/2.6實(shí)用教程 入門基礎(chǔ)篇

    Python2.5/2.6實(shí)用教程 入門基礎(chǔ)篇

    本文方便有經(jīng)驗(yàn)的程序員進(jìn)入Python世界.本文適用于python2.5/2.6版本.
    2009-11-11
  • Python計(jì)算一個(gè)點(diǎn)到所有點(diǎn)的歐式距離實(shí)現(xiàn)方法

    Python計(jì)算一個(gè)點(diǎn)到所有點(diǎn)的歐式距離實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python計(jì)算一個(gè)點(diǎn)到所有點(diǎn)的歐式距離實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 在Windows中安裝Spire.XLS?for?Python的操作指南

    在Windows中安裝Spire.XLS?for?Python的操作指南

    Spire.XLS?for?Python?是一款專業(yè)的?Python?Excel?庫(kù),可用于在各種?Python?應(yīng)用程序中讀取、創(chuàng)建、編輯和轉(zhuǎn)換?Excel?(.xls?&?.xlsx)?文件,本文將介紹如何在?Windows?中安裝?Spire.XLS?for?Python,需要的朋友可以參考下
    2025-02-02
  • Python中使用絕佳的八個(gè)Debug?工具

    Python中使用絕佳的八個(gè)Debug?工具

    在Python開發(fā)中,調(diào)試是解決問題和提高代碼質(zhì)量的關(guān)鍵,有許多強(qiáng)大的調(diào)試工具可幫助開發(fā)者更快速地發(fā)現(xiàn)和解決問題,本文將介紹8個(gè)出色的Python調(diào)試工具,并提供詳細(xì)的示例代碼,讓你更好地了解它們的用法和優(yōu)勢(shì)
    2024-01-01
  • Python docutils文檔編譯過程方法解析

    Python docutils文檔編譯過程方法解析

    這篇文章主要介紹了Python docutils文檔編譯過程方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python列表生成式與列表生成器的使用

    python列表生成式與列表生成器的使用

    本篇文章主要介紹了python列表生成式與列表生成器的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • python 排列組合之itertools

    python 排列組合之itertools

    python 排列組合之itertools,需要的朋友可以參考一下
    2013-03-03
  • Python中不可變數(shù)據(jù)類型原理與實(shí)戰(zhàn)全解析

    Python中不可變數(shù)據(jù)類型原理與實(shí)戰(zhàn)全解析

    在Python的世界里,數(shù)據(jù)對(duì)象被明確劃分為兩大陣營(yíng):可變(Mutable)與不可變(Immutable),而本文將為大家詳細(xì)介紹一下其中的不可變數(shù)據(jù),感興趣的可以了解下
    2025-04-04

最新評(píng)論

平利县| 镇宁| 乌恰县| 垣曲县| 宣武区| 襄樊市| 滨州市| 文登市| 博爱县| 芜湖市| 噶尔县| 泽州县| 奉化市| 龙山县| 阜新| 乌兰察布市| 商都县| 丁青县| 通辽市| 敖汉旗| 奎屯市| 绵阳市| 靖西县| 固始县| 崇文区| 阳朔县| 巴林左旗| 清徐县| 宜州市| 施甸县| 滨海县| 怀安县| 南安市| 体育| 纳雍县| 攀枝花市| 崇文区| 百色市| 睢宁县| 茌平县| 惠东县|