作者pig98520 (Jimmy)
看板Python
标题[问题] re 用法上的差异
时间Tue Apr 16 14:45:34 2019
大家好,小弟今天在使用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
若我的写法有误,我该怎麽修正?
感谢各位大神
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.136.42.144
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1555397137.A.1FF.html
※ 编辑: pig98520 (220.136.42.144), 04/16/2019 14:48:32
1F:推 CMJ0121: 你用 () 代表想要找那东西,如果只是想要 group 改用 04/16 15:25
2F:→ CMJ0121: (?: ... ) 04/16 15:25
※ 编辑: pig98520 (220.136.42.144), 04/16/2019 15:52:22
3F:→ pig98520: 感谢楼上大大解惑,不过想问一下?: 有点看不大懂估狗到的 04/16 15:57
4F:推 thefattiger: non capturing group, 只match但不捕捉结果 04/16 16:27
6F:→ CMJ0121: 所有 Python 支援的规则都放在这里了 04/16 22:29
7F:→ pig98520: 感谢! 04/16 22:38