请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

问号放到前面和后面有什么区别呢

问号放到前面和后面有什么区别呢?

问号放到后面

代码

import re

str = '13243543423adscvsdftooooooooppprrrrrrr123456453423'

reg_str = '.*(t.*p?).*'

match_result = re.match(reg_str,str)
if match_result:
    print(match_result.group(1))

结果

tooooooooppprrrrrrr123456453423

问号放到前面

代码

import re

str = '13243543423adscvsdftooooooooppprrrrrrr123456453423'

reg_str = '.*(t.*?p).*'

match_result = re.match(reg_str,str)
if match_result:
    print(match_result.group(1))

结果

toooooooop

正在回答 回答被采纳积分+3

1回答

bobby 2022-04-28 09:40:51

?表示贪婪匹配。 放在p前面就代表遇到第一个p就满足要求了,p前面不放问号就会匹配到最后一个, 可以这样简单理解,?放在前面代表从左往右匹配遇到第一个p就行了,把?放在后面就代表从右往左匹配遇到第一个就满足了

0 回复 有任何疑惑可以回复我~
  • 提问者 沧海红心 #1
    "tooooooooppprrrrrrr123456453423"  这是把?放到后面的结果,我不是很理解,什么都匹配出来了
    回复 有任何疑惑可以回复我~ 2022-04-29 08:37:50
  • bobby 回复 提问者 沧海红心 #2
    这样理解: t.*?p表示t和p之间 尽量短  t.*p表示t和p之间尽量长
    回复 有任何疑惑可以回复我~ 2022-04-29 23:07:56
  • 提问者 沧海红心 回复 bobby #3
    “ t.*?p表示t和p之间” 这句话可以理理。 但是把“.*(t.*p?).*”把匹配到的结果是“tooooooooppprrrrrrr123456453423” 就不理解了。 后面的数字是怎么出现的
    回复 有任何疑惑可以回复我~ 2022-05-12 16:32:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信