iT邦幫忙

1

python當中regex的用法

因為最近在學習寫linebot,想要使用關鍵字回覆的功能,但是個先前沒有學過程式語言的新手

message = '我肚子很餓,怎麼辦?'
if re.search('我.*?餓.*?怎麼辦',message)
    print('去吃泡麵')

是可行的
但若

message = '怎麼辦我肚子好餓~'

就不行了,三個關鍵字中間出現順序性,
想要三個關鍵字中間不要出現順序性,且要三個關鍵字同時出現就可以print出我想要的字句
想要請問該怎麼解決呢?

2 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-08-31 10:45:22
最佳解答
if re.search('.*?我.*?',message) and re.search('.*?餓.*?',message) and re.search('.*?怎麼辦.*?',message)
    print('去吃泡麵')
看更多先前的回應...收起先前的回應...

謝謝您!成功了!

請選最佳解答以進行結案動作
/images/emoticon/emoticon13.gif

囉嗦一句
中文的語意判斷,很複雜
晚上加班時會肚子,要怎麼辦理誤餐費申請?
總不好回「去吃泡麵」吧...XD
可能要多多考慮各種情形

了解!謝謝您的提醒XD

1
japhenchen
iT邦高手 1 級 ‧ 2020-08-31 11:19:20

詞組中必定出現但無關順序......不用那麼多AND啦...

import re
                
fre = re.compile(r'(?=.*怎麼辦)(?=.*我)(?=.*餓)')
    
if(fre.search("我肚子好痛怎麼辦~")):
    print("符合條件")
else:
    print("不合條件")

輸出: 不合條件

import re
                
fre = re.compile(r'(?=.*怎麼辦)(?=.*我)(?=.*餓)')
    
if(fre.search("我肚子好餓怎麼辦~")):
    print("符合條件")
else:
    print("不合條件")

輸出: 符合條件

import re
                
fre = re.compile(r'(?=.*怎麼辦)(?=.*我)(?=.*餓)')
    
if(fre.search("他肚子不餓怎麼辦~")):
    print("符合條件")
else:
    print("不合條件")

輸出: 不合條件

我路過打醬油的...........

我也用這招來應付郵箱地址無法有簡單規則的問題

也會試試看這個方法的!謝謝您!

我要發表回答

立即登入回答