如何使用非捕获括号来捕获单词或什么都没有?

时间:2013-08-22 10:42:18

标签: regex cucumber cucumber-jvm

我希望使用同一步骤的两个变体我是使用cucumber-jvm的ATDD测试

  

然后订单通过数量限制

  

然后订单通过限制

对于不同的场景,这将更好地阅读。我尝试了以下各种变体:

@Then(value = "^order passes (?: | quantity )limits$")
public void verifyCreditPassed(){ 
    //Assert stuff
}

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:6)

您需要删除^$元字符,然后正则表达式变为:

order passes (?:quantity |)limits

因为当您使用^时,该行必须以order开头,并且由于您使用了$,该行必须以limits结尾,以上正则表达式将与您的匹配输入字符串中的任何位置的句子。

或使用以下正则表达式:

^Then order passes (?:quantity )?limits$

答案 1 :(得分:0)

另外想出这个选项:

@Then(value = "^order passes(?: | quantity )limits$")
public void verifyCreditPassed(){ 

}