我已经进行了很多研究,找不到能在以下条件下实现所需文本的正则表达式。
我有一段很大的文字,我想在某些条件下提取文字:
示例文字:
我的书包里有2个苹果,苹果是很好的食物。你发抖 每天吃苹果。对健康非常有益。 3个香蕉也很好。 它可以减少脂肪。
下面是例外输出
袋子里的苹果和苹果很棒……对健康有益。
香蕉也很好。它可以减少脂肪
因此,如果存在2个关键字,则我希望创建2个文件,依此类推。
我尝试过的更新:
我尝试过的正则表达式是:
(?=(\d+)(\s?)apple)(.*)(?=\d+\s?banana:?s)
我这里有2个问题:
在提取的文本中,我不需要第一个数字
如何使它具有动态性,就像我有4个单词一样,我不必编写那么多组合,如果我们要搜索苹果,则提取的文本将保存在该变量中
Python版本:3.5
您能帮我提供正则表达式吗?
答案 0 :(得分:1)
尝试以下操作:assertThat(this.results.getResponse().getContentAsString().length()).isNotEqualTo(0);
请参阅:
代码:
\d+\s*((?:Apple|Banana|Orange|Pineapple)s?\b[\s\S]*?)(?=$|\d+\s*(?:Apple|Banana|Orange|Pineapple)s?\b)
注意:我假设您想停止匹配换行符。如果不是这种情况,则可以删除import re
regex = r"\d+\s*((?:Apple|Banana|Orange|Pineapple)s?\b[\s\S]*?)(?=$|\d+\s*(?:Apple|Banana|Orange|Pineapple)s?\b)"
test_str = "I have 2 apples in my bag and apples are great food toeat. you shud eat apples daily. it is very good for health. 3 bananas are also good. it reduces fat."
matches = re.findall(regex, test_str, re.MULTILINE | re.IGNORECASE)
for match in matches: print(match + "\n")
标志,以使re.MULTILINE
与字符串结尾匹配。