我有一个开始短语,比如fruits。我有一些结尾短语,如apple,banana和pineapple。
我有一些变量为text的文档
我的Regex和代码:
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的输出
Fruits are good Daily we should have pineapple ;; fruits have various minerals.
Most of them are very tastyP.S.:我也试过$,但也没用。
发布于 2019-05-03 10:07:51
在表达式中包括\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)输出如下
('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]
https://stackoverflow.com/questions/55967277
复制相似问题