首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex从短语到带条件的doc结尾

Regex从短语到带条件的doc结尾
EN

Stack Overflow用户
提问于 2019-05-03 09:49:01
回答 1查看 37关注 0票数 0

我有一个开始短语,比如fruits。我有一些结尾短语,如applebananapineapple

我有一些变量为text的文档

  1. 水果 它们对健康有益..。 应该吃苹果
  2. 水果 定期吃香蕉 你需要的水果 吃苹果
  3. 水果是好的 每天我们应该吃菠萝 一般来说,水果含有多种矿物质。 大多数都很好吃。

我的Regex和代码:

代码语言:javascript
运行
复制
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中部分工作。

问题

我所需要的是,当我们遇到成果,却找不到任何结尾短语,然后,然后,直到文件的结尾。

预期来自 text 3的输出

代码语言:javascript
运行
复制
Fruits are good Daily we should have pineapple ;; fruits have various minerals.
Most of them are very tasty

P.S.:我也试过$,但也没用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-03 10:07:51

在表达式中包括\Z,如下所示

代码语言:javascript
运行
复制
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)

输出如下

('Fruits are good\n\nDaily we should have pineapple', 'pineapple');;('Fruits have various minerals.\n\nMost of them are very tasty\n', '') [Finished in 0.1s]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55967277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档