gpt4 book ai didi

python - 我怎样才能得到非贪婪和贪婪之间所有可能匹配的列表

转载 作者:行者123 更新时间:2023-11-28 22:18:39 24 4
gpt4 key购买 nike

我在 Python 中有字符串 "I like lettuce and carrots and onions"

我想我可以通过使用像 .* 和。 (正则表达式应匹配“和”之前的任何字符。)

然而,使用贪婪版本(.* 和)只给我最后一场比赛,而使用非贪婪版本(.*? and)给我只有第一场比赛。

我怎样才能获得全部三场比赛?

(我不需要正则表达式解决方案。)

最佳答案

为了好玩,使用 Python 3 中的字符串 partition 方法。它在字符串中搜索子字符串,并返回一个三元组。当有匹配时,它是

(string before the match, the match, string after the match)

一旦您习惯了它,它就会非常愉快 - 不需要索引,并且可以轻松获得正确的结果。因此,虽然此代码比其他一些方式更长,但您应该能够轻松地对其进行推理:

def findallprefix(s, sep):
sofar = ""
while True:
head, matched, s = s.partition(sep)
if matched:
assert matched == sep
sofar += head
yield sofar
sofar += matched
else:
break

s = "I like lettuce and carrots and onions and dressing."
for match in findallprefix(s, " and"):
print(repr(match))

打印

'I like lettuce'
'I like lettuce and carrots'
'I like lettuce and carrots and onions'

关于python - 我怎样才能得到非贪婪和贪婪之间所有可能匹配的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com