re模組簡介及元字元和轉義字元

2022-09-14 21:06:15 字數 4110 閱讀 2777

import

re'''

.代表萬用字元,除了\n不能匹配外,其它全部都能匹配,乙個點代表乙個字元

^代表字串開頭進行匹配,只能放在最前面

$代表字串結尾進行匹配,只能放在最後面

*代表0到無窮次

+代表1次到無窮次

?代表0次到1次

{}代表自行控制多少次, == *, == +, == ?,代表6次,代表1,2,3,4,5,6次

*****注意:前面的*,+,?等都是貪婪匹配,也就是盡可能多的匹配;後面加?號使其變成惰性匹配,比如*?匹配0個,+?匹配1個*****

代表字符集,或的作用;

'''#

.代表萬用字元,除了\n不能匹配外,其它全部都能匹配,乙個點代表乙個字元

#print(re.findall('a..x', 'fialexskdlfjaghx'))

#^代表字串開頭進行匹配,只能放在最前面

#print(re.findall('^b.*b$', 'bslkafdsallkb'))

#print(re.findall('^abc', 'abcsss'))

#$代表字串結尾進行匹配,只能放在最後面

#print(re.findall('.+b$', 'asdfb'))

#*代表0到無窮次

#print(re.findall('abc*', 'abcccccbbabc'))

#print(re.findall('a*', 'abakjalaaoaaia')) # 結果為['a', '', 'a', '', '', 'a', '', 'aa', '', 'aa', '', 'a', ''],*代表0到無窮次,那麼不是a也代表匹配上了,因為0它也取,只不過為空

#print(re.findall('d*$', 'dddlslslsdddd'))

#print(re.findall('^d*', 'dddlslslsdddd'))

#+代表1次到無窮次

#print(re.findall('alex*', 'asddsaale')) # *代表0到無窮次,那麼x可以沒有,所以ale可以取出來

#print(re.findall('alex+', 'asddsaale')) # +代表1到無窮次,那麼x最少要有乙個,所以alex取不出來

#?代表0次到1次

#print(re.findall('alex?', 'asddsafale'))

#print(re.findall('alex?', 'asddsale******f'))

#{}代表自行控制多少次, == *, == +, == ?,代表6次,代表1,2,3,4,5,6次;*****大括號裡的逗號不能有空格*****

#print(re.findall('alex', 'ahskalefdsfd'))

#print(re.findall('alex', 'ahskale***fdsfd'))

#print(re.findall('alex', 'alexxfkdjale***fkdialexjaleiiale***x'))

#print(re.findall('alex', 'ale***xx'))

#惰性匹配--->*?匹配0個,+?匹配乙個

#print(re.findall('alex*?', 'ale'))

#print(re.findall('alex*?', 'alex'))

#print(re.findall('alex*?', 'ale***x'))

#print(re.findall('alex+?', 'ale'))

#print(re.findall('alex+?', 'alex'))

#print(re.findall('alex+?', 'ale***x'))

#代表字符集,或的作用

#print(re.findall('www[baidu,]', 'wwwbwwwawwwiwwwdwwwuwww,')) # 裡面的每乙個字元都當作一次匹配,包括逗號:['wwwb', 'wwwa', 'wwwi', 'wwwd', 'wwwu', 'www,']

#print(re.findall('[abc.*+]', 'aa.bs*cs+')) # ['a', 'a', '.', 'b', '*', 'c', '+']

#在字符集裡有功能的符號:- ^ \

#print(re.findall('[a-z]', '123abc456qwerty')) # 代表小寫字母a-z

#print(re.findall('[a-z]', '123abc456qwerty')) # 代表大寫字母a-z

#print(re.findall('[0-9]', '001122q3w4e5a6s7d89')) # 代表數字0-9

#print(re.findall('q[^a-z]', 'qaqbqcqdqeqfq0q1qaq.q*q!q')) # 非,除小寫字母a-z以外的都匹配

#*****print(re.findall('\([^()]*\)', '12+(34*6+2-5*(2-1))')) # *****計算器作業---提取括號裡的表示式---沒有理解透到底怎麼回事,需重新複習理解*****

'''元字元之轉義符\

反斜槓後邊跟元字元去除特殊功能,比如\.

反斜槓後邊跟普通字元實現特殊功能,比如\d

\d 匹配任何十進位制數;它相當於類 [0-9]。

\d 匹配任何非數字字元;它相當於類 [^0-9]。

\s 匹配任何空白字元;它相當於類 [ \t\n\r\f\v]。

\s 匹配任何非空白字元;它相當於類 [^ \t\n\r\f\v]。

\w 匹配任何字母數字字元;它相當於類 [a-za-z0-9_]。下劃線也可以匹配到

\w 匹配任何非字母數字字元;它相當於類 [^a-za-z0-9_]

\b 匹配乙個特殊字元邊界,比如空格,&,#等

'''#

print(re.findall('\d+', '1a2b34c56d78f90g'))

#print(re.findall('\d+', '1a2b34c56d78f90gw'))

#print(re.findall('\s+', '\tabc\n123'))

#print(re.findall('\s+', '\tabc\n123'))

#print(re.findall('\w+', '12,ab.00*cd?你好@'))

#print(re.findall('\w+', '12,ab.00*cd?你好@'))

#print(re.findall('www\.baidu\.com', 'www.baidu.com')) # 如果不加轉義符,後面的除了\n不能匹配外,其它都能匹配到

print(re.findall('

i', '

i am list

')) #

['i', 'i']

print(re.findall('

^i', '

i am list

')) #

['i']

print(re.findall('

^i', '

hello i am list

')) #

print(re.findall('

i\b', '

hello i am list

')) #

print(re.findall(r'

i\b', '

hello i am list

')) #

['i'],r=rawstring,原生字串,不做任何轉義

print(re.findall('

i\\b

', '

hello i am list

')) #

['i']

print(re.findall('

c\\\\l

', '

abc\le

')) #

\l<--->re模組\\l<--->python直譯器\\\\l;結果['c\\l'],其實是乙個\,但是python又一次轉義多加了乙個\

print(re.findall(r'

c\\l

', '

abc\le

')) #

\l<--->re模組\\l<--->python直譯器\\l

re 模組中常用的元字元

元字元 描述.點號 匹配除換行符 n r 以外的所有字元。要匹配包括 r n 在內的任何字元,使用 s s 的模式。從字串首位匹配。書寫時必須寫在首位,否則匹配為空。從字串末尾匹配。書寫時必須寫在末尾,否則匹配為空。重複匹配任意多次 包括0次 重複匹配任意多次 不包括0次 匹配0次或1次。n是乙個非...

PHP 元字元與轉義

正規表示式中具有特殊含義的字元稱之為元字元,常用的元字元有 一般用於轉義字元 斷言目標的開始位置 或在多行模式下是行首 斷言目標的結束位置 或在多行模式下是行尾 匹配除換行符外的任何字元 預設 開始字元類定義 結束字元類定義 開始乙個可選分支 子組的開始標記 子組的結束標記 作為量詞,表示 0 次或...

Linux Shell 萬用字元 元字元 轉義符使用

shell常見萬用字元 字元含義例項 匹配 0 或多個字元 a b a與b之間可以有任意長度的任意字元,也可以乙個也沒有,如aabcb,axyzb,a012b,ab。匹配任意乙個字元 a?b a與b之間必須也只能有乙個字元,可以是任意字元,如aab,abb,acb,a0b。list 匹配 list ...