4
我正在尋找一個可以匹配兩個日期字符串的正則表達式。我有指定「或」表達麻煩:如何做'或'匹配但不捕獲正則表達式中的'或'部分?
"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"]
我正在尋找一個可以匹配兩個日期字符串的正則表達式。我有指定「或」表達麻煩:如何做'或'匹配但不捕獲正則表達式中的'或'部分?
"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"]
非捕獲組形式(?:...)
代替的形式的捕獲組:/\d{4}-\d{2}-(XX|\d{2})/
因爲它僅返回XX部分不工作(...)
。所以:
"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-(?:XX|\d{2})/)
"2007-01-XX 2008-01-01".scan(/(\d{4}-\d{2}-(XX|\d{2}))/).map(&:first)
事實上,你是正確的。更新了標題以更好地表示問題;-) – 2012-03-13 18:03:49