python实现条件匹配_python3 re如何匹配满足条件的选项?
我們在表格中查詢數(shù)據(jù),只需要點擊那個功能鍵就可以了,不過這也是僅限于數(shù)據(jù)不多時候的使用。在我們數(shù)據(jù)比較多的時候,小編還是推薦用python中的模塊來進行解決,比如最近一直在講的re模塊就非常好用。那么其中有沒有能夠進行匹配滿足條件選項的函數(shù)呢?我們一起往下看:
編寫一個程序,復制一段文本到剪貼板后,運行程序,自動找出文本所有的電話號碼和郵件地址,并復制到剪貼板供用戶使用。
思路:從剪貼板中獲取文本
匹配出所有的電話號碼和郵件地址
將它們粘貼到剪貼板
實現(xiàn):使用pyperclip模塊復制或粘貼字符串,pyperclip 需要使用pip安裝
創(chuàng)建兩個正則表達式,一個匹配電話,另一個匹配郵件地址
將匹配好的字符串整理好,處理一下格式,發(fā)送給剪貼板
如果沒有找到匹配,報錯或提示用戶
代碼:#!/usr/bin/env?python3
#?-*-?coding:utf-8?-*-
#?author:?Windrivder
#?email?:?windrivder@gmail.com
#?date??:?17/03/27?12:58:05
import?re,?pyperclip
#?匹配電話
phoneRegex?=?re.compile(r'''(
^(13[0-9]|??????????????#?匹配13開頭的電話
14[5|7]|
15[0|1|2|3|5|6|7|8|9]|
18[0|1|2|3|5|6|7|8|9])
\d{8}$
)''',?re.VERBOSE)???????????#?如上,傳入?yún)?shù)?re.VERBOSE?可以給正則表達式添加注釋,詳見附錄
#?匹配郵件地址
emailRegex?=?re.compile(r'''(
[a-zA-Z0-9._% -] ???????????#?email-username
@
[a-zA-Z0-9.-] ??????????????#?domain-name
(\.[a-zA-Z]{2,4})????????????#?dot-something
)''',?re.VERBOSE)
#?從剪貼板中獲取字符串
text?=?str(pyperclip.paste())
#?存放匹配到的字符串
matches?=?[]
for?phone?in?phoneRegex.findall(text):
matches.append(phone[0])
for?email?in?emailRegex.findall(text):
matches.append(email[0])
#?將匹配到的字符串復制到剪貼板
if?len(matches)?>?0:
pyperclip.copy('\n'.join(matches))
print('Copied?to?clipboard:')
print('\n'.join(matches))
else:
print('No?phone?or?email?found.')
小伙伴們可以先理清開頭的思路,然后再進行代碼的復制嘗試,看看是不是能提取出文本中的電話號碼呢?更多Python學習推薦:JQ教程網(wǎng)Python大全。
總結(jié)
以上是生活随笔為你收集整理的python实现条件匹配_python3 re如何匹配满足条件的选项?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么样的板材叫做双向板?
- 下一篇: 如何配置mysql8.0_安装和配置My