怎么做'或'匹配但不捕获正则表达式中的'或'部分?

Par*_*esh 4 ruby regex

我正在寻找一个可以匹配日期字符串的正则表达式.我在指定'或'表达式时遇到问题:/\d{4}-\d{2}-(XX|\d{2})/不起作用,因为它只返回XX部分:

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-XX/)
["2007-01-XX"]

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-\d{2}/)
["2008-01-01"]
Run Code Online (Sandbox Code Playgroud)

rua*_*akh 7

使用表单的非捕获组(?:...)而不是表单的捕获组(...).所以:

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-(?:XX|\d{2})/)
Run Code Online (Sandbox Code Playgroud)