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