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

shyt4zoc  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(87)

我希望在我的ATDD测试中使用Cucumber-jvm的同一步骤的两个变体
然后订单通过数量限制

然后订单通过限制
这将更好地阅读不同的场景。我尝试了以下各种变体:

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

字符串
有人能帮忙吗?
谢啦,谢啦

6uxekuva

6uxekuva1#

你需要删除^$元字符,然后你的正则表达式变成:

order passes (?:quantity |)limits

字符串
因为当你使用^时,这一行必须以单词order开始,并且因为你使用了$,这一行必须以limits结束,所以上面的正则表达式将在输入字符串中的任何地方匹配你的句子。
或者使用以下正则表达式:

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

pb3skfrl

pb3skfrl2#

我也想出了这个办法:

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

}

字符串

相关问题