importre'''
.代表萬用字元,除了\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 ...