2

在阅读工程持久软件:使用 SaaS 和云计算的敏捷方法时,我遇到了以下正则表达式(第 5 章,第5.3 节介绍黄瓜和水豚):

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

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

4

3 回答 3

4

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

于 2013-04-06T11:12:00.843 回答
0

它只是or. 它可以不匹配任何内容或I(带有空格)。其余的是您提到的非捕获组。

正则表达式匹配类似的东西I am on a dietam on a diet而且在上面的例子中,a diet在第一组中捕获。

在 Rubular 上尝试一下 - http://rubular.com/r/q3RFEoxj1e

于 2013-04-06T11:12:24.970 回答
0

(?:|something)

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

与以下内容完全相同:

(?:something)?

(“匹配,一次或没有”)

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

于 2013-04-06T11:14:00.347 回答