Java 如何使用正则表达式从cucumber功能文件中提取特定场景

Java 如何使用正则表达式从cucumber功能文件中提取特定场景,java,regex,cucumber-java,Java,Regex,Cucumber Java,我有一个cucumber特性文件,其中包含多个场景,每个场景都有不同的和。我正在使用Java正则表达式来解析文件,并希望根据and中的文本提取一个特定的场景 例如: 特点:测试材料 场景: 燕子夫人飞 送给一位女士 女士吞下一只“苍蝇” 那么这位女士还活着 场景: 女士吞下蜘蛛送给女士,女士吞下一只“苍蝇”,“蜘蛛” 那么这位女士还活着 场景: 女士什么都吃 送给一位女士 女士吞下一只“苍蝇”、“蜘蛛”、“猫”、“狗”、“牛” 然后这位女士死了 场景: 除了狗,女士什么都吃 送给一位女士 女士吞

我有一个cucumber特性文件,其中包含多个场景,每个场景都有不同的和。我正在使用Java正则表达式来解析文件,并希望根据and中的文本提取一个特定的场景

例如:

特点:测试材料

场景:

燕子夫人飞 送给一位女士 女士吞下一只“苍蝇” 那么这位女士还活着

场景:

女士吞下蜘蛛送给女士,女士吞下一只“苍蝇”,“蜘蛛” 那么这位女士还活着

场景:

女士什么都吃 送给一位女士 女士吞下一只“苍蝇”、“蜘蛛”、“猫”、“狗”、“牛” 然后这位女士死了

场景:

除了狗,女士什么都吃 送给一位女士 女士吞下一只“苍蝇”、“蜘蛛”、“猫”、“牛” 然后这位女士死了

我想取出包含
dog
的场景,并将其转储到一个单独的文件中。在我的现实生活中,
dog=accountnumber
并与自动加载到本地数据库中的多个SQL提取关联。这是一个单一的场景,在一个单一的功能文件中,这是数百个功能文件中的一个。因此,在场景顶部使用
@run
并不是一个简单的例子。我实际上正在提取场景和相关文件,以便将它们放在沙箱中

到目前为止,我掌握的正则表达式是:

.*?dog.*Scen
但这会从场景的第一个实例中选择超出我想要的场景

相反,我想退出团队:

场景:

女士什么都吃 送给一位女士 女士吞下一只“苍蝇”、“蜘蛛”、“猫”、“狗”、“牛” 然后这位女士死了


有人知道我如何才能拉出该组吗?

如果场景由\n分隔,请尝试:

^[^\n]+\bdog\b[^\n]+
(?=Scenario).+?\bdog\b.+?(?=Scenario|$)

如果是连续字符串,请尝试使用:

^[^\n]+\bdog\b[^\n]+
(?=Scenario).+?\bdog\b.+?(?=Scenario|$)

每个场景是否包含在一个连续字符串中?或者至少有一个“\n”分隔它们?添加单词边界,您就可以开始了。这些正则表达式将匹配包含字母“dog”而不是单词的字符串。