[問題] re 用法上的差異

作者: pig98520 (CheinFeng)   2019-04-16 14:45:34
大家好,小弟今天在使用re尋找文章字串時,發現一個問題,
我想要從一個字串當中 找出 今天天氣好像(很好or不大好)
以下是程式碼:
import re
pattern=re.compile(r'今天天氣+.+(很好|不大好)')
print(pattern.findall('今天天氣好像不是很好'))
# [今天天氣好像不是很好]
print(pattern.search('今天天氣好像不是很好'))
# <re.Match object; span=(0, 10), match='今天天氣好像不是很好'>
print(pattern.search('今天天氣好像不是很好').group())
# 今天天氣好像不是很好
print(pattern.findall('今天天氣好像很好'))
# 今天天氣好像很好
print(pattern.search('今天天氣好像很好'))
# <re.Match object; span=(0, 10), match='今天天氣好像很好'>
print(pattern.search('今天天氣好像很好').group())
# 今天天氣好像很好
註解內容為我預期的輸出結果,而下列為輸出結果
['很好']
<re.Match object; span=(0, 10), match='今天天氣好像不是很好'>
今天天氣好像不是很好
['很好']
<re.Match object; span=(0, 8), match='今天天氣好像很好'>
今天天氣好像很好
想問一下,為什麼我用findall時只會回傳['很好'],
我的pattern裡面並沒有單獨這個條件呀QQ
若我的寫法有誤,我該怎麼修正?
感謝各位大神
作者: CMJ0121 (請多指教!!)   2019-04-16 15:25:00
你用 () 代表想要找那東西,如果只是想要 group 改用(?: ... )
作者: pig98520 (CheinFeng)   2019-04-16 15:57:00
感謝樓上大大解惑,不過想問一下?: 有點看不大懂估狗到的
作者: thefattiger (LT)   2019-04-16 16:27:00
non capturing group, 只match但不捕捉結果
作者: CMJ0121 (請多指教!!)   2019-04-16 22:28:00
https://docs.python.org/3/library/re.html所有 Python 支援的規則都放在這裡了
作者: pig98520 (CheinFeng)   2019-04-16 22:38:00
感謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com