如何在Ruby中使正则表达式的一部分可选?

AnA*_*ice 11 ruby regex

要匹配以下内容:

On Mar 3, 2011 11:05 AM, "mr person" 
wrote: 
Run Code Online (Sandbox Code Playgroud)

我有以下正则表达式:

/(On.* (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{1,2}, [12]\d{3}.* at \d{1,2}:\d{1,2} (?:AM|PM),.*wrote:)/m
Run Code Online (Sandbox Code Playgroud)

有没有办法让at在可选?所以如果它很好,如果没有,它仍然匹配?

kin*_*all 16

当然.把它放在括号中,在它后面加一个问号.包括其中一个空格(否则,如果"at"丢失,您将尝试匹配两个空格.)(at )?(或者像其他人建议的那样,(?:at )?以避免被捕获).


And*_*imm 13

不要忘记(?:)确保不会捕获括号中的表达式

(?:at)?
Run Code Online (Sandbox Code Playgroud)