1. 程式人生 > >Python3 正則表達式 Regular Expression

Python3 正則表達式 Regular Expression

直接 d+ pytho dal \n alex 轉義 dfa world!

2019/02/08
正則表達式
Regular Expression
掌握特殊符號
* (0, +00) # 貪婪匹配,按最多的匹配
>>> re.findall(‘alex*‘, ‘sddgljalexdhgb‘)
[‘alex‘]
>>> re.findall(‘alex*‘, ‘sdghshalexxxxxgdhg‘)
[‘alexxxxx‘]


+ (1, +00) # 貪婪匹配,按最多的匹配
>>> re.findall(‘alex+‘, ‘sdghshalexxxxxgfhg‘)
[‘alexxxxx‘]


? (0, 1) # 匹配前面的字母0個或1個


re.findall(‘alex?‘, ‘sdfaleghhfg‘)
[‘ale‘]
>>> re.findall(‘alex?‘, ‘dsalexxxdggh‘)
[‘alex‘]


{} {0, } == *
{1, } == +
{0, 1} == ?
{6} # 重復6次
{1,6} # 重復1——6任意次
>>> re.findall(‘alex{1,6}‘, ‘sgalexxxxxxxxxxgdfgfdgdxx‘)
[‘alexxxxxx‘]
>>> re.findall(‘alex{1,6}‘, ‘sgalexxgdfgfdgdxx‘)
[‘alexx‘]


^ # 開頭直接匹配
>>> re.findall(‘^alex‘, ‘agfhjghfhd‘)
[]
>>> re.findall(‘^alex‘, ‘alexjghfhd‘)
[‘alex‘]


. # 通配符
>>> re.findall(‘alex.‘, ‘alexxc‘)
[‘alexx‘]
>>> re.findall(‘ale....x‘, ‘sdfaledfdfxfxx‘)
[‘aledfdfx‘]

>>> re.findall(‘q[a-z]‘, ‘fgjqfd‘)
[‘qf‘]
>>> re.findall(‘q[a-z]*‘, ‘fgjqfd6g‘)
[‘qfd‘]
>>> re.findall(‘q[a*z]‘, ‘sfqaaasdsdz‘)
[‘qa‘]
>>> re.findall(‘q[0-9]*‘, ‘sfsdqfgkg88‘)
[‘q‘]
>>> re.findall(‘q[A-Z]*‘, ‘sdfgqgsdgq‘)
[‘q‘, ‘q‘]
>>> re.findall(‘q[^a-z]‘, ‘sdfdsqwre‘) # ^ 代表非
[]
>>> re.findall(‘q[^a-z]‘, ‘sdfdsq77re‘)
[‘q7‘]



計算器作業,先找出最裏層括號
>>> re.findall("\([^()]*\)", "12 + ( 34 * 6 + 2 - 5 * (2 - 1))")
[‘(2 - 1)‘]


\ # 最重要的轉義字符,有意義-->無意義,無意義--->有意義
\d # 匹配任何十進制數,相當於類[0-9]
\D # 匹配任何非數字字符,相當於類[^0-9]
>>> re.findall("\d", "12 + ( 34 * 6 + 2 - 5 * (2 - 1))")
[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘6‘, ‘2‘, ‘5‘, ‘2‘, ‘1‘]
>>> re.findall("\d+", "12 + ( 34 * 6 + 2 - 5 * (2 - 1))")
[‘12‘, ‘34‘, ‘6‘, ‘2‘, ‘5‘, ‘2‘, ‘1‘]
>>> re.findall("[0-9]+", "12 + ( 34 * 6 + 2 - 5 * (2 - 1))")
[‘12‘, ‘34‘, ‘6‘, ‘2‘, ‘5‘, ‘2‘, ‘1‘]
>>> re.findall("\D", "12+(34*6+2-5*(2-1))")
[‘+‘, ‘(‘, ‘*‘, ‘+‘, ‘-‘, ‘*‘, ‘(‘, ‘-‘, ‘)‘, ‘)‘]
>>>



\s # 匹配任何空白字符,相當於類[\t\n\r\f\v]
\S # 匹配任何非空白字符,相當於類[^\t\n\r\f\v]
>>> re.findall("\s", "hello world!")
[‘ ‘]
>>> re.findall("\S", "hello world!")
[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘w‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘, ‘!‘]
>>> re.findall("\S+", "hello world!")
[‘hello‘, ‘world!‘]
>>>



\w # 匹配任何字母數字字符和_,相當於類[a-zA-Z0-9_]
>>> re.findall("\w", "hello _world!")
[‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘_‘, ‘w‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘]
>>> re.findall("\w+", "hello _world!")
[‘hello‘, ‘_world‘]
>>>
\W # 匹配任何非字母數字字符,相當於類[^a-zA-Z0-9_]
>>> re.findall("\W+", "hello _world!")
[‘ ‘, ‘!‘]
>>>


\ # \ 轉義
>>> re.findall(‘www*baidu‘, ‘www*baidu‘)
[]
>>> re.findall(‘www\*baidu‘, ‘www*baidu‘)
[‘www*baidu‘]
>>>

Python3 正則表達式 Regular Expression