正则表达式匹配目标词之前的特定词的行

正则表达式匹配目标词之前的特定词的行

我是一个完全的菜鸟,想用 Python 写一个正则表达式,可以匹配线包含“水果”,但只使用单词“orange”。“水果”和“orange”之间有未知数量的行。

这是我目前得到的信息:

((^.\b(水果)\b。$(\n|\r|\r\n)))橙色

my colors
 i am red
 i am blue
 i am green

my fruits
 abc
 def
 i am a apple
 i am a orange
 i am a banana
 

my vehicle
 i am a sedan
 i am a van
 i am a motorbike

应该匹配

my fruits

任何帮助深表感谢!

答案1

也许您可以使用组。请参阅此示例(快速而粗糙,在没有匹配的情况下没有错误处理...)

import re

text="""
my colors
 i am red
 i am blue
 i am green

my fruits
 abc
 def
 i am a apple
 i am a orange
 i am a banana
 

my vehicle
 i am a sedan
 i am a van
 i am a motorbike
 """
 

res=re.search(r'\n*(my [a-zA-Z]*)\n([a-zA-Z ]+\n)*.*orange.*',text)

print(res.group(1))

这将返回“my fruit”。请注意,这仅适用于特定示例,因为您没有准确指定输入模式的格式。

相关内容