iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 11
0
自我挑戰組

資工的日常系列 第 11

PYTHON regular expression 正規表達式超入門

  • 分享至 

  • xImage
  •  

使用環境:
Anaconda Spyder
官方網頁:
https://docs.python.org/3/library/re.html
re(regular expression)是很方便的字串處理module。可以把原本需要很多處理字串判斷式的程式碼用更簡便的方式呈現。


re.findAll("使用條件","目標字串") 回傳所有在"目標字串"裡符合"使用條件"的字串。
https://ithelp.ithome.com.tw/upload/images/20171230/20107866fw7PxYMmwx.png
注意乘號和加號都是以前一字元為目標。EX:a+b,效果會在a身上,也就是a至少一次,b只有一次。

test_string = 'aabb abb aab '
pattern = 'a+b'
ans=re.findall(pattern,test_string)
print(ans)

結果:['aab', 'ab', 'aab', 'ab']


其他程式碼:

import re
# 練習抓abbbbc, bc
test_string = 'find abbbbc, bc, skip c, acc'
pattern = 'a*b+c'
ans=re.findall(pattern,test_string)
print(ans)
# 練習找數字
test_string = '12 Drummers Drumming, 11 Pipers Piping, 10 Lords a Leaping'
pattern = '[0-9]+'
ans=re.findall(pattern,test_string)
print(ans)
# 練習找文字
test_string = 'find: can, man, fan, skip: dan, ran, pan'
pattern = '[cmf]an'
ans=re.findall(pattern,test_string)
print(ans)
# 練習跳脫符號
test_string = 'find: 591., dot., yes., skip: non!'
pattern = '.{3}\.'
ans=re.findall(pattern,test_string)
print(ans)
# 條件式搜尋
test_string = 'find: I love cats, I love dogs, skip: I love logs, I love cogs'
pattern = 'I love cats|I love dogs'
ans=re.findall(pattern,test_string)
print(ans)

輸出結果:
['abbbbc', 'bc']
['12', '11', '10']
['can', 'man', 'fan']
['591.', 'dot.', 'yes.']
['I love cats', 'I love dogs']


正規表達式可以更進階,今天先弄比較簡單,之後有更認識會再補/images/emoticon/emoticon16.gif


上一篇
CPE 考題 Deli Deli
下一篇
Android listView (ArrayAdapter)
系列文
資工的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言