如何使用正则表达式

时间:2015-08-06 13:48:39

标签: java regex cucumber-java

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

例如:

功能:测试内容

情景:

  女士燕子飞了起来       有一位女士       和女士吞下了一只"苍蝇"       然后女士生活

情景:

  女士吞下蜘蛛鉴于一位女士和女士吞下了一只"苍蝇"蜘蛛"   然后女士生活

情景:

  女士吞下一切        有一位女士        和女士吞下了一只"苍蝇",#34;蜘蛛"," cat"," dog"," cow"        然后女士死了

情景:

  除了狗,女士吞下了一切        有一位女士        和女士吞下了一只"苍蝇",#34;蜘蛛"," cat"," cow"        然后女士死了

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

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

.*?dog.*Scen

但是从场景的第一个实例中选择超出我想要的场景。

相反,我想拉出小组:

情景:

  女士吞下一切        有一位女士        和女士吞下了一只"苍蝇",#34;蜘蛛"," cat"," dog"," cow"        然后女士死了

有谁知道如何撤出该组?

1 个答案:

答案 0 :(得分:1)

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

^[^\n]+\bdog\b[^\n]+

DEMO

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

(?=Scenario).+?\bdog\b.+?(?=Scenario|$)

DEMO