iT邦幫忙

DAY 22
0

蠻可愛的資料庫與資料處理系列 第 22

過濾資料探討2

昨天介紹了使用Pytnon的正規表示式模組re.
今天繼續探討.

In [1]: import re

In [2]: re.search("[0123456789]", "6") != None
Out[2]: True

因為"6"是數字.所以符合.

錨點 ^ 代表開頭

In [3]: re.search("^[0123456789]", "12") != None
Out[3]: True

In [4]: re.search("^[0123456789]", "1x") != None
Out[4]: True

錨點 $ 代表結尾

In [5]: re.search("[0123456789]$", "56") != None
Out[5]: True

因為"56"的結尾是6,數字符合.

In [6]: re.search("[0123456789]$", "1x") != None
Out[6]: False

因為"1x"的結尾是x,不符合.

In [7]: re.search("[0123456789]$", "x1") != None
Out[7]: True

因為"1x"的結尾是1,符合.

那把錨點^$結合呢?

In [8]: re.search("^[0123456789]$", "4") != None
Out[8]: True

In [9]: re.search("^[0123456789]$", "45") != None
Out[9]: False

為何4符合,而45卻不符合呢?
這是很容易令人疑惑的地方!
實際上我們的pattern [01234567890] 代表的是列舉,
去符合字串! 所以 ^$ 結合,限制條件就變很嚴格了.
先來看以下的例子.

In [10]: re.search("^[456][567]$", "45") != None
Out[10]: True

這個意義就是開頭是4或5或6, 結尾是5或6或7,而且是兩個字元的.
回到上面的 re.search("^[0123456789]$", "45") != None
代表的意義是數字,既要當頭,也要當尾,那就只有一個的情況下才能相符.
所以"45"不符.

In [11]: re.search("^[456][567]$", "475") != None
Out[11]: False

雖然4開頭,5結尾,但是數字的數量不對,7找不到匹配的pattern,

不符合.

實務上,我們會用 [0-9]方式代表數字.

In [12]: re.search("^[0-9][0-9]$", "45") != None
Out[12]: True

這樣就符合了. 表示方式也較為清晰.


上一篇
過濾資料探討1
下一篇
過濾資料探討3
系列文
蠻可愛的資料庫與資料處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言