在阅读工程长效软件:使用SaaS和云计算的敏捷方法时,我遇到了以下正则表达式(第5章, 5.3介绍Cucumber和Capybara ) :
/^(?:|I )am on (.+)$/
我知道非捕获(?: ...)
语法,但我不明白的是冒号后第一个管道字符的含义。这是一个错字吗?它有什么用途吗?
答案 0 :(得分:4)
正则表达式中的管道意味着替代方案。在这种情况下,它表示空字符串""
和字符串"I "
之间的交替。
答案 1 :(得分:0)
只是or
。它可以匹配任何内容或I
(带空格)。剩下的就像你提到的那样是非捕获组织。
正则表达式匹配I am on a diet
和am on a diet
之类的内容,并在上面的示例中,捕获第一组中的a diet
。
尝试使用Rubular - http://rubular.com/r/q3RFEoxj1e
答案 2 :(得分:0)
(?:|something)
(“没有/空字符串或匹配”)
与以下内容完全相同:
(?:something)?
(“匹配,一次或无”)
换句话说:非捕获子模式是可选的。