如何在python正则表达式中获取两个子字符串中的特定字符串?

2024-06-24 09:06:23 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是一个例子:

review: I love you very much... reviewer:jackson review: I hate you very much... reviewer:madden review: sky is pink and i ... reviewer: tom

我想提取字符串review:...之间的字符串

所以上述情况的提取是正确的

I love you very much

I hate you very much

sky is pink and i

我使用这种正则表达式,但失败了

re.findall("review(.*)...",string)

它提取了这种结果:

I love you very much... reviewer:jackson review: I hate you very much... reviewer:madden review: sky is pink and i


Tags: and字符串youisreview例子veryreviewer
3条回答

re.findall与模式\breview:\s*(.*?)\.\.\.\s*(?=\breviewer:|$)一起使用:

inp = "review: I love you very much... reviewer:jackson review: I hate you very much... reviewer:madden review: sky is pink and i ... reviewer: tom"
matches = re.findall(r'\breview:\s*(.*?)\.\.\.\s*(?=\breviewer:|$)', inp)
print(matches)

这张照片是:

['I love you very much', 'I hate you very much', 'sky is pink and i ']

您可以使用以下利用lookaheads的模式:

(?<=review:\s).*?(?=\.\.\.)

inp = "review: I love you very much... reviewer:jackson review: I hate you very much... reviewer:madden review: sky is pink and i ... reviewer: tom"
matches = re.findall(r'(?<=review:\s).*?(?=\.\.\.)', inp)
print(matches)

这也会起作用,而且很简单

str = "review: I love you very much... reviewer:jackson review: I hate you very much... reviewer:madden review: sky is pink and i ... reviewer: tom"

matches = re.findall('review:(.+?)\.\.\.', str)

相关问题 更多 >