什么`(?:| ...)`在Ruby正则表达式中意味着什么?

时间:2013-04-06 11:08:21

标签: ruby regex

在阅读工程长效软件:使用SaaS和云计算的敏捷方法时,我遇到了以下正则表达式(第5章, 5.3介绍Cucumber和Capybara ) :

/^(?:|I )am on (.+)$/

我知道非捕获(?: ...)语法,但我不明白的是冒号后第一个管道字符的含义。这是一个错字吗?它有什么用途吗?

3 个答案:

答案 0 :(得分:4)

正则表达式中的管道意味着替代方案。在这种情况下,它表示空字符串""和字符串"I "之间的交替。

答案 1 :(得分:0)

只是or。它可以匹配任何内容或I(带空格)。剩下的就像你提到的那样是非捕获组织。

正则表达式匹配I am on a dietam on a diet之类的内容,并在上面的示例中,捕获第一组中的a diet

尝试使用Rubular - http://rubular.com/r/q3RFEoxj1e

答案 2 :(得分:0)

(?:|something)

(“没有/空字符串或匹配”)

与以下内容完全相同:

(?:something)?

(“匹配,一次或无”)

换句话说:非捕获子模式是可选的。