1. 程式人生 > >python3 正則表示式(更新中)

python3 正則表示式(更新中)

1、特殊符號(先解釋,後面會有例子)

表示 描述
re1|re2 或的關係
. 匹配任何字元(\n除外),要顯示的匹配.號,需要加\|
^ 匹配字串的開頭
$ 匹配字串的結尾
* 匹配0次或多次前面出現的正則表示式
+ 匹配1次或者多次前面出現的正則表示式
匹配0次或者一次(一句話,就是匹配越少越好)
{N} 重複N次前面出現的正則表示式
{M,N} 匹配M~N次前面出現的正則
【abcd】 匹配集合中某一個元素
【x-y】 匹配x~y範圍內任意的一個字元(如【A-Za-z】匹配大小寫
【^……】 不匹配集合裡的字元(切記:^【……】意義是匹配以集合元素開頭的)
注意 直接使用\…的時候是在用r‘\……’情況使用的,不用r是要用\……才能使用
\d 匹配十進位制數字
\w 匹配任何字母數字
\s 匹配任何空字元(\S與之相反)
\N 匹配已經儲存的子組
\A 和^一個意思
\Z 和$一個意思
(?=.com) 如何一個字串跟著.com才做匹配操作
(?!.net) 如何一個字串後面不是跟著.net才做匹配操作
(?(1)y|x) 如果一個匹配組(1)存在,就和y匹配,否則和x匹配

2、re模組函式

函式方法 描述
compile(str,flags) 預編譯一個正則模式,返回正則表示式物件
match(pattern,str,flags) 從頭開始按照pattern模式匹配str
search(pattern,str,flags) 隨意按照pattern模式查詢str
findall(pattern,string,flags) 查詢字串中所有非重複出現的正則表示式模式,並返回一個列表
finditer(pattern,string,flags) 與findall()一樣,只是返回一個迭代器
sub(patter,repl,string,count) 使用repl替換所有正則在string中出現的位置,如果沒有count就會替換所有
(?iLmsux)部分詳細解釋 下列屬性
re.I、re.IGNORECASE 不區分大小寫的匹配
re.M、re.MULTLINE 根據^和$的開始和結束來匹配

3、使用match()方法匹配字串

>>>import re
>>>m = re.match('foo','food on the table')
>>>m.group()#group()返回匹配物件
'foo'

4、使用search()方法查詢

>>>import re
>>>m = re.rearch('foo',seafood')
>>>m.group()
'foo'

5、匹配多個字串

>>>bt ='bat|bet|bit'
>>>m = re.match(bt,'bat')
>>>m.group()
'bat'

6、匹配單個字元

>>>anyend = '.end'
>>>m = re.match(anyend,'bend')
>>>m.group()
'bend'

7、建立字符集【】

>>>m = re.match('[cr][23][dp][o2]','c3po')
>>>m.group()
'c3po'

8、group()和groups()區別

#一個括號代表一個組
#groups返回一個元祖
>>>m = re.match('(\w\w\w)-(\d\d\d)','abc-123')
>>>m.group()
'abc-123'
>>>m.group(1)
'abc'
>>>m.group(2)
'123'
>>>m.groups()
('abc','123')

9、findall查詢所有的,finditer迭代

>>>re.findall(r'(th\w+)','This and that,re.I)
#re.I忽略大小寫,r是使用原生字元
['This','that']
>>>it = re.finsiter(r'th\w+)','This and that',re.I)
>>> g = it.__next__()
>>>g.groups()
('This',)
>>g.group(1)
'This'
>>>g = it.__next__()
>>>g.groups()
('that',)

10、使用sub()和subn()搜尋和替換

>>>re.sub('X','Mr.Smith','attn:X',\n')
'attn:Mr.Smith,\n'
#subn會返回('attn:Mr.Smith,\n',1),替換了一次
#\N是分組編號
>>>re.sub(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4}',
... r'\2/\1/\3','2/20/91')
'20/2/91'
#替換的結果就是結果的第一個組變成第二個組,第二個組變成第一個

11、貪婪與不貪婪

#貪婪
>>>pat = '.+\d+-\d+-\d+'
>>>date = 'Thu Feb 15 17:46:04 2007::[email protected]::1212345-6-8'
>>>re.search(pat,date).group()
'Thu Feb 15 17:46:04 2007::[email protected]::1212345-6-8'
#不貪婪
>>>pat = '.+?\d+-\d+-\d+'
...
...
>>>re.search(pat,date).group()
'1212345-6-8'

相關推薦

python3 表示式(更新

1、特殊符號(先解釋,後面會有例子) 表示 描述 re1|re2 或的關係 . 匹配任何字元(\n除外),要顯示的匹配.號,需要加\| ^ 匹配字串

Python3 表示式group()方法獲得匹配結果

正則表示式中用match()方法可以獲得匹配的字串內容。 如果想從字串中提取出一部分內容,可以用括號將提取目標括起來。 括號()實際上標記了一個子表示式的開始和結束的位置,被標記的每個子表示式會依次對應每個分組,呼叫group()方法傳入分組的索引即可獲得提取的結果。

在linux下,如何在C語言使用表示式(整理

  一個正則表示式的教程可以參看(裡面有個測試正則表示式的工具)      正則表達是用來匹配字串的好東東。       如果使用者熟悉Linux下的sed、awk、grep或vi,那麼對正則表示式這一概念肯定不會陌生。由於它可以極大地簡化處理字串時的複雜度,因此現 在已

Python3 表示式特殊符號及用法(詳細列表

廢話 有一個美式笑話:我有一個難題,可以用正則表示式解決,那麼,現在我有兩個難題。 美式笑話確實有點冷,只有學過正則表示式的人才能讀懂這個段子。 下面列舉了Python3的所有符號用法,別背,千萬

python3表示式(regex

    正則表示式提供了一種緊湊的表示法,可用於表示字串的組合,一個單獨的正則表示式可以表示無限數量的字串。常用的5種用途:分析、搜尋、搜尋與替代、字串的分割、驗證。 (一)正則表示式語言python中特殊字元有    \.^$?+*{}[]()|1、字元類速記^   如果在字元類中第一個字元則表示否定;-

(基礎Python3表示式

python正則表示式介紹: 佇列 介紹 在爬蟲的程式中用到了廣度優先順序演算法,該演算法用到了資料結構,當然你用list也可以實現佇列,但是效率不高。現在在此處介紹下: 在容器中有佇列:collection.deque #佇列簡單測試: from co

Mssql實現用表示式更新欄位值

create   function   dbo.regexReplace     (     @source   varchar(5000),         --原字串     @regexp   varchar(1000),         --正則表示式     @replace   varch

Android驗證姓名、身份證、銀行卡、手機號(表示式校驗

最近專案中遇到驗證銀行卡號的問題,就查了一下,也總結總結,後期如果發現其他資訊驗證的會補上的。  1.驗證輸入的身份證號是否正確 public static boolean isLegalId(String id) { if (id.toUpperCase

表示式(re

1、re.match(pattern, str, flag) 從str的第一個字母開始匹配,若不是開頭的,儘管屬於str內,則無法匹配。 2、貪婪匹配與非貪婪匹配(?) 貪婪匹配:嘗試匹配儘可能多的字元 >>> sentence = """You said "why?" and I

表示式(數量詞

public class Demo4_Regex { /** * Greedy 數量詞 X? X,一次或一次也沒有 X* X,零次或多次 X+ X,一次或多次 X{n} X,恰好 n 次 X{n,} X,至少 n 次 X{n,m} X,至少 n 次

表示式(RegEx——快速參考

https://ahkcn.github.io/docs/misc/RegEx-QuickRef.htm#%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%88RegEx%EF%BC%89%E2%80%94%E2%80%94%E5%BF%

表示式(基礎

^: 1)放某字元前面,表示以什麼開頭(如:^a,表示以a開頭的所有字串)   2)在方括號裡用'^'表示不希望出現的字元,'^'應在方括號裡的第一位。(如:%[^a-zA-Z]% ,表示兩個百分號中不應該出現字母) $:放某字元後面,表示以什麼結尾   *:放某字元後面,表示沒有或更多,還

MySQL 表示式(REGEXP

正則表示式用來匹配文字的特殊的串(字元集合)(匹配文字,將一個模式(正則表示式)與一個文字串進行比較)。 LIKE 和 REGEXP之間的重要差別 LIKE 匹配整個列,如果被匹配的文字在列值中出現,LIKE 將不會找到它,相應的行也不會被返回(除非使用萬用字元)。而 REGEXP 在列

js表示式(2

找到以某個字串開頭的字串 var myReg=/^(abc)/gim; 如果不加m,那麼只找一行,而加了m可以找到每行中以該字串開頭的匹配文字。 如: abcsfsdfasd7890hklfahskfkaluiop7890-7890782ksdlafkasdnfklsdnf;lsabc

詳解JavaScript表示式(三

本文是JavaScript正則表示式的第三篇文章,若是對正則表示式陌生的話,可以看我之前的兩篇文章。 詳解正則表示式(一) 詳解正則表示式(二) 貪婪模式和非貪婪模式 1、貪婪模式 在匹配成功的情況下,儘可能多的匹配。而JavaScript預設的就是貪婪模式。話不多說,直

詳解JavaScript表示式(一

RegExp 物件表示正則表示式,它是對字串執行模式匹配的強大工具 這篇文章主要是對正則表示式有一個全面的瞭解,學完之後,當再次看到一些比較複雜的正則表示式的時候就可以逐步分析了。當然,再加上一段時間的練習,相信你自己也可以學會怎麼使用正則表示式的。 1、例項化正則表示式的兩種方

Python3 表示式語法整理

^ : 匹配輸入字串的開始位置(或在多行模式下行的開頭,即緊隨一換行符之後) . : 匹配除了換行符 \n 外的任意一個字元 : 匹配0次、1次或多次其前的原子 $ : 匹配輸入字串的結束位置(或在多行模式下

jsp頁面驗證手機號的表示式(最新

jsp頁面校驗手機號(js): function checkMobile(){           var checkRole =/^0?(13[0-9]|15[012356789]|18[012346789]|1

Python :表示式(1

#正則表示式 需要呼叫的模組 : import re #函式引數: patter :需要匹配的正則表示式 string:需要匹配的字串 flags :標誌位,用於控制正則的匹配方式 { re.I :忽略大小寫 var = re.match("www","Www.baidu.com.",

常用表示式(copy

一、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0