正則表達式re(python)

python的re

元字符metacharacter
. 除換行符外的任意一個字符
[abcd] 集合里的任意一個字符
[^abcd]除集合里的字符的任意一個字符
[a-z] 字符范圍,范圍內的任意一個字符
\b 單詞的邊界 例:\ba在文本中找到以a開頭的字符,a\b以a結尾的字符
\B 不匹配單詞的邊界 例:t\B包含t不以t結尾的字符,\Bt含有t不以t開頭的字符
\d 任意一位0-9的數字
\D 一位非數字
\s 一位空白字符,包括換行符、制表符、空格
\S 一位非空白字符
\w 匹配[a-zA-Z0-9],包括中文
\W 匹配\w之外的字符
重復
* 重復0次或多次
+ 重復至少一次
?重復0次或1次
{n} 重復n次
{n,} 重復至少n次
{n,m} 重復n-m次

x|y 匹配x或者y
(pattern) 分組,分配組號,從1開始
(?:pattern) 去掉分組,只為改變優先級
(?<name>exp) 給分組命名
零寬斷言
(?=exp) 斷言exp一定在匹配的右邊出現
(?<=exp) 斷言exp一定在匹配的左邊出現
(?!exp) 斷言exp一定不在匹配的右邊出現
(?<!exp) 斷言exp一定不在匹配的左邊出現
斷言不占分組號

貪婪和非貪婪
默認是貪婪模式,盡可能多的取
*?匹配任意次,盡可能少重復
+?匹配至少1次,盡可能少重復
?? 匹配0次或1次,盡可能少重復
{n,}? 匹配至少n次,盡可能少重復
{n,m}? 匹配至少n次,至多m次,盡可能少重復

單行模式和多行模式
單行模式:.可以匹配所有字符,包括換行符。
^表示整個字符串的開頭,$整個字符串的結尾
多行模式:.不包括換行符
^表示行首,$表示行位

 

python的RE
使用re模塊(import re)
re.M多行模式,re.S單行模式,re.I忽略大小寫
編譯:re.compile(pattern,flags=0)
regex=re.compile(pattern,flags=0)
單詞匹配
re.match(pattern,string,flags=0)
regex.match(string,[2,4])
匹配從字符串的開頭匹配,regex可以重新設定開始和結束位置,返回match對象

re.search(pattern,string,flags=0)
regex.search(string,[2,4])
從頭搜索直到第一個匹配,regex可以重新設定開始和結束位置,返回match對象
re.fullnmath(pattern,string,flags=0)
regex.fullmatch(string,[2,4])
整個字符串和正則表達式匹配

全部匹配
re.findall(pattern,string,flags=0)
regex.findall(string,[2,4])
整個字符串,從左至右匹配,返回所有匹配項的列表
re.finditer(pattern,string,flags=0)
regex.finditer(string,[2,4])
整個字符串,從左至右匹配,返回所有匹配項,返回迭代器
每次迭代返回的是match對象

匹配替換
re.sub(pattern,replacement,string,count=0,flags=0)
regex.sub(replacement,string,count=0)
使用pattern對字符串string進行匹配,對匹配項使用replacement替換,
replacement可以是string,bytes,function。

re.subn(pattern,replacement,string,count=0,flags=0)
regex.subn(replacement,string,count=0)
同sub 返回一個元組(new_string,number_of_subs_made)

分割字符串
re.split(pattern,string,maxsplit=0,flags=0)

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88245

(0)
10590628461059062846
上一篇 2017-11-06 19:37
下一篇 2017-11-07 09:33

相關推薦

  • 文本處理工具sed的使用以及Vim的使用技巧詳解

    一、什么是sed     sed的英文全稱是Stream EDitor,叫行編輯器。     sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容…

    Linux干貨 2016-08-11
  • 網絡的冰山一角

        這周我們學習了網絡管理,每一天進度特別快,上課認真聽了,但是感覺也只能聽懂一半。所以我決定把網絡管理作為這周博客寫一寫,這樣相當于又復習了一邊,能加深印象。 一、用戶應用程序對網絡的影響     1、批處理應用程序:無需直接人工交互,寬帶很重要,但是并非關鍵性因素。 &n…

    2017-09-04
  • 馬哥教育網絡班21期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:橋接器,是連接兩個局域網的一種存儲/轉發設備,它能將一個大的LAN分割為多個網段,或將兩個以上的LAN互聯為一個邏輯LAN,使LAN上的所有用戶都可訪問服務器 集線器:集線器的英文稱為“Hub”.集線器(hub)屬于純硬件網絡底層設備,基本上不具有類似于交換機的"…

    Linux干貨 2016-08-29
  • Linux 文件管理、查看、編輯、查找命令及BASH特性

    1、文件管理類命令總結  (1)cp命令:copy                    源文件 :目標文件 :    &nbsp…

    Linux干貨 2016-10-17
  • 第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 發送者:     1)使用單向加密算法提取要發送文件的特征碼;     2)使用自己的私鑰加密特征碼并附加在數據后面;     3)生成用于對稱加密的臨時密碼;     4)用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼; &nb…

    2017-03-20
  • nginx

    Linux干貨 2016-10-30
欧美性久久久久