java - 如何使用正则表达式从 cucumber 特征文件中提取特定场景

标签 java regex cucumber-java

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

例如:

功能:测试东西

场景:

lady swallows fly Given a lady and lady swallows a "fly" then lady lives

场景:

lady swallows spider Given a lady and lady swallows a "fly","spider" then lady lives

场景:

lady swallows everything Given a lady and lady swallows a "fly","spider","cat","dog","cow" then lady Dies

场景:

lady swallows everything except the dog Given a lady and lady swallows a "fly","spider","cat","cow" then lady Dies

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

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

.*?dog.*Scen

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

相反,我想退出该组:

场景:

lady swallows everything Given a lady and lady swallows a "fly","spider","cat","dog","cow" then lady Dies

有人知道我怎样才能退出该组吗?

最佳答案

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

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

DEMO

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

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

DEMO

关于java - 如何使用正则表达式从 cucumber 特征文件中提取特定场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31857558/

相关文章:

cucumber - 在运行时提取 cucumber 步骤名称

java - 我可以创建一个 spring bean 作为我的 cucumber 步骤定义的一部分吗?

java - 为什么 hibernate 将 HibernateException 更改为(未检查的)RuntimeException

java - 如何使用 ANT 构建具有不同 java 版本的 jar

java - 从 MongoDb 聚合查询创建 Spring Data 聚合

python - python中的正则表达式字典

python - 如何使用长正则表达式进行续行?

java - 如何使用 Apache POI 和 TestNG dataProvider 编写 Excel

java - 正则表达式不匹配

cucumber 3 : How to define a regular expression