
本文主要關於python的正則表達式的符號與方法。
- findall: 找尋所有匹配,返回所有組合的列表
- search: 找尋第一個匹配並返回
- sub: 替換符合規律的內容,並返回替換後的內容
**.**:匹配除了換行符以外的任意字符
1 2 3 4
|
a = b = re.findall( print # ['xy12']
|
*****:匹配前一個字符0次或者無限次
1 2 3 4
|
a = b = re.findall( print # ['x', '', 'x', '', '', '', '', '']
|
**?**:匹配前一個字符0次或者1次
1 2 3 4
|
a = b = re.findall( print # ['x', '', '', '', '', '']
|
**.***:貪心算法
1 2 3
|
b = re.findall( print # ['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx']
|
**.*?**:非貪心算法
1 2 3
|
c = re.findall( print # ['xxIxx', 'xxlovexx', 'xxyouxx']
|
**()**:括號內結果返回
1 2 3 4 5 6 7 8
|
d = re.findall( print for print # ['I', 'love', 'you'] # I # love # you
|
re.S
1 2 3 4 5 6
|
s = xxfsdfxxworldxxasdf'''
d = re.findall( print # ['hellon', 'world']
|
對比findall與search的區別
1 2 3 4 5 6 7
|
s2 = f = re.search( print f2 = re.findall( print # love # love
|
雖然兩者結果相同,但是search是搭配group來得到第二個匹配,而findall的結果是[('I', 'love')],包含元組的列表,所以需要f2[0][1]來引入。
sub
1 2 3 4
|
s = output = re.sub( print # 123789123
|
例如我們需要將文檔中的所有的png圖片改變路徑,即需要找到所有的
1 2 3 4 5 6 7 8 9 10 11 12
|
import
def # Convert group 0 to an integer. v = m.group( print # Multiply integer by 2. # ... Convert back into string and return it. print return
|
結果如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
>>> basic/autoencoder.png RNN.png basic/RNN.png rnn_step_forward.png basic/rnn_step_forward.png rnns.png basic/rnns.png rnn_cell_backprop.png basic/rnn_cell_backprop.png LSTM.png basic/LSTM.png LSTM_rnn.png basic/LSTM_rnn.png attn_mechanism.png basic/attn_mechanism.png attn_model.png basic/attn_model.png
|
仿照上面案例,我們可以方便的對我們的任務進行定制。
subn
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
import
def # Convert. v = # Add 2. return
# Call re.subn. result = re.subn(
print print
|
1 2 3
|
>>> Result string: Number of substitutions:
|