Python 正则表达式从短语开始到带条件的文档结尾
我有一个起始短语,说Python 正则表达式从短语开始到带条件的文档结尾,python,regex,Python,Regex,我有一个起始短语,说水果。我有一些结尾词,比如苹果、香蕉和菠萝 我有一些变量为text的文档: 果实 它们有益于健康 你应该吃苹果 果实 经常吃香蕉 你需要的水果 吃苹果 水果是好的 每天我们都应该吃菠萝 一般来说,水果含有各种矿物质 大多数都很好吃 我的正则表达式和代码: p = r'(\bFruits\b\s*\w*\s*\n*.*?(\bApples?\b|\bbananas?\b|\bpineapples?\b))' sep = ";;" lst = re.findall(p
水果
。我有一些结尾词,比如苹果、香蕉和菠萝
我有一些变量为text
的文档:
p = r'(\bFruits\b\s*\w*\s*\n*.*?(\bApples?\b|\bbananas?\b|\bpineapples?\b))'
sep = ";;"
lst = re.findall(p, text, re.I|re.M|re.DOTALL)
val = sep.join(str(v) for v in lst )
上述正则表达式在text
1和2中运行良好,部分在text
3中运行良好
问题:
Fruits are good Daily we should have pineapple ;; fruits have various minerals.
Most of them are very tasty
我所需要的是当我们遇到水果,并没有找到任何结束语,然后,只有这样,直到文件的结尾
文本的预期输出3:
Fruits are good Daily we should have pineapple ;; fruits have various minerals.
Most of them are very tasty
p.S.:我也尝试了$
,但也不起作用。在表达式中包含\Z
,如下所示
text = '''Fruits are good
Daily we should have pineapple
In general, Fruits have various minerals.
Most of them are very tasty
'''
p = r'(\bFruits\b\s*\w*\s*\n*.*?(\bApples?\b|\bbananas?\b|\bpineapples?\b|\Z))'
sep = ";;"
lst = re.findall(p, text, re.I|re.M|re.DOTALL)
val = sep.join(str(v) for v in lst )
print(val)
结果如下
text = '''Fruits are good
Daily we should have pineapple
In general, Fruits have various minerals.
Most of them are very tasty
'''
p = r'(\bFruits\b\s*\w*\s*\n*.*?(\bApples?\b|\bbananas?\b|\bpineapples?\b|\Z))'
sep = ";;"
lst = re.findall(p, text, re.I|re.M|re.DOTALL)
val = sep.join(str(v) for v in lst )
print(val)
(“水果很好”\n\n每天我们应该吃菠萝”、“菠萝”);;(“水果含有多种矿物质。\n\n其中大多数非常美味,”)
[在0.1s中完成]
此处是否需要使用正则表达式?在这种情况下,Python字符串方法将更加清晰和简单:搜索文本中的第一个单词,找到后将所有内容添加到新的单词列表中,直到遇到任何来自结尾的单词或直到数据结束。是的,实际上正则表达式是一个要求!!然后用作附加可选的end\Z(与苹果、香蕉和PinapplesOrry没有找到的地方相同!!请更正我的正则表达式并粘贴在这里或作为答案!!这将很有帮助!!应该是这样的,但无法测试:p=r'(\bFruits\b\s*\w*\s*\n*?(\bApples?\b | \bAnananas?\b | \b | \bpineapples?\b |\Z))'