[问题] 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