日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
歸納整理python正則表達(dá)式解析

本篇文章給大家?guī)砹岁P(guān)于python的相關(guān)知識,其中主要介紹了Python正則表達(dá)式的相關(guān)問題,總結(jié)了包括正則表達(dá)式函數(shù)、元字符、特殊序列、集合套裝、匹配對象等等,希望對大家有幫助。

創(chuàng)新互聯(lián)憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個人等客戶提供了成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

推薦學(xué)習(xí):python教程

正則表達(dá)式的作用是什么?我們網(wǎng)頁抓取到的內(nèi)容很多,我們不可能全部都獲取,只需要其中的一部分內(nèi)容,因此我們需要使用正則來匹配我們想要的內(nèi)容。

Python 有一個名為 的內(nèi)置包re,可用于處理正則表達(dá)式。導(dǎo)入re模塊:

import re

Python中的正則表達(dá)式

導(dǎo)入re模塊后,您可以開始使用正則表達(dá)式。
例如:搜索字符串以查看它是否以“The”開頭并以“Spain”結(jié)尾:

import re

txt = "The rain in Spain"x = re.search("^The.*Spain$", txt)if x:
  print("匹配成功!")else:
  print("匹配失敗")

運(yùn)行:

當(dāng)然,你現(xiàn)在看不懂這個例子,既然手把手教學(xué),并不會教大家一步登天。

正則表達(dá)式函數(shù)

findall() 函數(shù)

該findall()函數(shù)返回一個包含所有匹配項(xiàng)的列表。
例如:打印所有匹配項(xiàng)的列表

import re

txt = "川川菜鳥啊菜鳥啊"x = re.findall("菜鳥", txt)print(x)

運(yùn)行返回:

該列表按找到的順序包含匹配項(xiàng)。如果未找到匹配項(xiàng),則返回一個空列表:

import re

txt = "菜鳥并不菜"x = re.findall("川川", txt)print(x)if (x):
  print("匹配成功了喲")else:
  print("找不到這個呀!")

運(yùn)行返回:

search() 函數(shù)

該search()函數(shù)在字符串中搜索匹配項(xiàng),如果有匹配項(xiàng),則返回一個Match 對象。如果有多個匹配項(xiàng),則只返回匹配項(xiàng)的第一次出現(xiàn)。
例如:搜索字符串中的第一個空白字符:

import re

txt = "菜鳥 呢"x = re.search("\s", txt)print("第一個空格字符位于位置:", x.start())

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

如果未找到匹配項(xiàng),None則返回該值:

import re

txt = "天上飛的是菜鳥"x = re.search("川川", txt)print(x)

返回:

split() 函數(shù)

該split()函數(shù)返回一個列表,其中的字符串在每次匹配時被拆分。
例如:在每個空白字符處拆分

import re

txt = "菜鳥 學(xué) python"x = re.split("\s", txt)print(x)

運(yùn)行返回:

您可以通過指定maxsplit 參數(shù)來控制出現(xiàn)次數(shù)
例如:僅在第一次出現(xiàn)時拆分字符串:

import re#Split the string at the first white-space character:txt = "飛起來 菜鳥 們"x = re.split("\s", txt, 1)print(x)

返回:

sub() 函數(shù)

該sub()函數(shù)用您選擇的文本替換匹配項(xiàng)。
例如:用只替換就

import re

txt = "學(xué)python就找川川菜鳥"x = re.sub("就", "只", txt)print(x)

運(yùn)行:

您可以通過指定count 參數(shù)來控制替換次數(shù) :
例如替換前 2 次出現(xiàn):

import re

txt = "學(xué)python就就就川川菜鳥"x = re.sub("就", "只", txt,2)print(x)

返回:

元字符

列表符號

[] 用于一組字符
例如:#按字母順序查找“a”和“m”之間的所有小寫字符

import re

txt = "apple chuanchuan "#按字母順序查找“a”和“m”之間的所有小寫字符x = re.findall("[a-m]", txt)print(x)

運(yùn)行:

轉(zhuǎn)義符

** 表示特殊序列(也可用于轉(zhuǎn)義特殊字符)
例如匹配所有數(shù)字:

import re

txt = "我今年20歲了"#查找所有數(shù)字字符x = re.findall("\d", txt)print(x)

運(yùn)行返回:

任意符號

. 可以任何字符(換行符除外)。
例如:搜索以“he”開頭、后跟兩個(任意)字符和一個“o”的序列

import re

txt = "hello world"#搜索以“he”開頭、后跟兩個(任意)字符和一個“o”的序列x = re.findall("he..o", txt)print(x)

運(yùn)行返回:

開始符

^符號用于匹配開始。

import re

txt = "川川菜鳥 飛起來了"x = re.findall("^川", txt)if x:
  print("哇,我匹配到了")else:
  print("哎呀,匹配不了啊")

運(yùn)行:

結(jié)束符

$ 符號用于匹配結(jié)尾,例如:匹配字符串是否以“world”結(jié)尾

import re

txt = "hello world"#匹配字符串是否以“world”結(jié)尾x = re.findall("world$", txt)if x:
  print("匹配成功了耶")else:
  print("匹配不到哦")

運(yùn)行:

星號符

  • 星號符用于匹配零次或者多次出現(xiàn)。
import re

txt = "天上飛的是菜鳥,學(xué)python找川川菜鳥!"#檢查字符串是否包含“ai”后跟 0 個或多個“x”字符:x = re.findall("菜鳥*", txt)print(x)if x:
  print("匹配到了!")else:
  print("氣死了,匹配不到啊")

運(yùn)行:

加號符

+ 用于匹配一次或者多次出現(xiàn)
例如:檢查字符串是否包含“菜鳥”后跟 1 個或多個“菜鳥”字符:

import re

txt = "飛起來了,菜鳥們!"#檢查字符串是否包含“菜鳥”后跟 1 個或多個“菜鳥”字符:x = re.findall("菜鳥+", txt)print(x)if x:
  print("匹配到了!")else:
  print("煩死了,匹配不到")

運(yùn)行:

集合符號

{} 恰好指定的出現(xiàn)次數(shù)
例如:檢查字符串是否包含“川”兩個

import re

txt = "川川菜鳥并不菜!"#檢查字符串是否包含“川”兩個x = re.findall("川{2}", txt)print(x)if x:
  print("匹配到了兩次的川")else:
  print("匹配不到啊,帥哥")

返回:

或符

| 匹配兩者任一
例如:匹配字符串菜鳥或者是我了

import re

txt = "菜鳥們學(xué)會python了嗎?串串也是菜鳥啊!"x = re.findall("菜鳥|是我了", txt)print(x)if x:
  print("匹配到了哦!")else:
  print("匹配失敗")

運(yùn)行:

特殊序列

指定字符

\A : 如果指定的字符位于字符串的開頭,則返回匹配項(xiàng)。
例如:匹配以菜字符開頭的字符

import re

txt = "菜鳥在這里"x = re.findall("\A菜", txt)print(x)if x:
  print("是的匹配到了")else:
  print("匹配不到")

運(yùn)行:

指定開頭結(jié)尾

\b 返回指定字符位于單詞開頭或結(jié)尾的匹配項(xiàng) (開頭的“r”確保字符串被視為原始字符串)。
例如:匹配愛開頭

import re

txt = "愛你,川川"x = re.findall(r"\b愛", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")

運(yùn)行:

又例如:匹配川結(jié)尾

import re

txt = "愛你,川川"x = re.findall(r"川\b", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")

運(yùn)行:

匹配中間字符

\B 返回存在指定字符但不在單詞開頭(或結(jié)尾)的匹配項(xiàng) (開頭的“r”確保字符串被視為“原始字符串”)
比如我匹配菜鳥:

import re

txt = "我是菜鳥我是菜鳥啊"#檢查是否存在“ain”,但不是在單詞的開頭:x = re.findall(r"\菜鳥", txt)print(x)if x:
  print("匹配到了嘛!!")else:
  print("匹配不到哇!")

運(yùn)行:

但是你匹配結(jié)尾就會返回空,比如我匹配鳥:

import re

txt = "川川菜鳥"#檢查是否存在“鳥”,但不是在單詞的末尾:x = re.findall(r"鳥\B", txt)print(x)if x:
  print("匹配到了哦")else:
  print("找不到")

運(yùn)行:

匹配數(shù)字

\d 返回字符串包含數(shù)字(0-9 之間的數(shù)字)的匹配項(xiàng)。
例如:

import re

txt = "我今年20歲了啊"#檢查字符串是否包含任何位數(shù)(0-9的數(shù)字)x = re.findall("\d", txt)print(x)if x:
  print("哇哇哇,匹配到數(shù)字了")else:
  print("找不到哦")

運(yùn)行:

匹配非數(shù)字

\D 返回字符串不包含數(shù)字的匹配項(xiàng)
例如:

import re

txt = "我今年20歲"#匹配任何非數(shù)字符號x = re.findall("\D", txt)print(x)if x:
  print("匹配到了,開心!")else:
  print("匹配不到,生氣")

運(yùn)行:

空格匹配

\s 返回一個匹配字符串包含空白空間字符的匹配項(xiàng)。
例如:

import re

txt = "我 是 川 川 菜 鳥"#匹配任何空格字符x = re.findall("\s", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到啊")

運(yùn)行:

匹配非空格

\S 返回字符串不包含空格字符的匹配項(xiàng)

import re

txt = "菜鳥是  我  了"#匹配任意非空字符x = re.findall("\S", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到啊")

運(yùn)行:

匹配任意數(shù)字和字母

返回一個匹配,其中字符串包含任何單詞字符(從 a 到 Z 的字符,從 0 到 9 的數(shù)字,以及下劃線 _ 字符)
例如:

import re

txt = "菜鳥啊 是串串呀"#在每個單詞字符(從a到z的字符,0-9的數(shù)字)返回匹配項(xiàng),以及下劃線_字符):x = re.findall("\w", txt)print(x)if x:
  print("匹配到了啊")else:
  print("匹配不到哇")

運(yùn)行:

匹配任意非數(shù)字和字母

返回字符串不包含任何單詞字符的匹配項(xiàng),在每個非單詞字符中返回匹配(不在A和Z之間的字符?!?!”,“?”空白位等)
例如:

import re

txt = "菜鳥 是 我嘛?我不信??!"#在每個非單詞字符中返回匹配(不在A和Z之間的字符?!?!”,“?”空白位等):x = re.findall("\W", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到啊")

運(yùn)行:

匹配結(jié)尾

\Z 如果指定的字符位于字符串的末尾,則返回匹配項(xiàng)。
例如:

import re

txt = "川川是菜鳥啊"x = re.findall("啊\Z", txt)print(x)if x:
  print("匹配到了哦!")else:
  print("匹配不到")

集合套裝

指定符范圍匹配

例如集合:[arn]

import re

txt = "The rain in Spain"x = re.findall("[arn]", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到")

匹配任意范圍內(nèi)小寫字母

返回任何小寫字符的匹配項(xiàng),按字母順序在 a 和 n 之間。
例如:

import re

txt = "hello wo r l d"x = re.findall("[a-n]", txt)print(x)if x:
  print("匹配到了!")else:
  print("匹配不到")

運(yùn)行:

同樣的道理,依次其它情況如下:

[^arn] 返回除 a、r 和 n 之外的任何字符的匹配項(xiàng)

[0123] 返回存在任何指定數(shù)字(0、1、2 或 3)的匹配項(xiàng)

[0-9] 返回 0 到 9 之間任意數(shù)字的匹配項(xiàng)

[0-5][0-9] 返回 00 到 59 中任意兩位數(shù)的匹配項(xiàng)

[a-zA-Z] 按字母順序返回 a 和 z 之間的任何字符的匹配,小寫或大寫

[+] 在集合中,+, *, ., |, (), $,{} 沒有特殊含義,所以 [+] 的意思是:返回字符串中任意 + 字符的匹配項(xiàng)。這個我i舉個例子:

import re

txt = "5+6=11"#檢查字符串是否有任何 + 字符:x = re.findall("[+]", txt)print(x)if x:
  print("匹配到了")else:
  print("匹配不到")

運(yùn)行:

匹配對象

匹配對象是包含有關(guān)搜索和結(jié)果的信息的對象。注意:如果沒有匹配,None將返回值,而不是匹配對象。
直接舉個例子:
執(zhí)行將返回匹配對象的搜索

import re#search() 函數(shù)返回一個 Match 對象:txt = "hello world"x = re.search("wo", txt)print(x)

運(yùn)行:

Match 對象具有用于檢索有關(guān)搜索和結(jié)果的信息的屬性和方法:

span()返回一個包含匹配開始和結(jié)束位置的元組。
string返回傳遞給函數(shù)的字符串
group()返回字符串中匹配的部分

span函數(shù)

例如:打印第一個匹配項(xiàng)的位置(開始和結(jié)束位置)。正則表達(dá)式查找任何以大寫“S”開頭的單詞:

import re#搜索單詞開頭的大寫“S”字符,并打印其位置txt = "The rain in Spain"x = re.search(r"\bS\w+", txt)print(x.span())

運(yùn)行:

string函數(shù)

例如:打印傳遞給函數(shù)的字符串

import re#返回字符串txt = "The rain in Spain"x = re.search(r"\bS\w+", txt)print(x.string)

group函數(shù)

例如:打印字符串中匹配的部分。正則表達(dá)式查找任何以大寫“S”開頭的單詞

import re#搜索單詞開頭的大寫“w”字符,并打印該單詞:txt = "hello world"x = re.search(r"\bw\w+", txt)print(x.group())

運(yùn)行:

注意:如果沒有匹配,None將返回值,而不是匹配對象。


當(dāng)前標(biāo)題:歸納整理python正則表達(dá)式解析
轉(zhuǎn)載來源:http://m.5511xx.com/article/cohgogp.html