Как сделать 'или' сопоставление, но не захватить 'или' часть в регулярном выражении? - PullRequest
4 голосов
/ 13 марта 2012

Я ищу регулярное выражение, которое может соответствовать обеим строкам даты. У меня проблемы с указанием выражения 'или': /\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"]

Ответы [ 2 ]

7 голосов
/ 13 марта 2012

Используйте группу без захвата формы (?:...) вместо группы захвата формы (...).Итак:

"2007-01-XX 2008-01-01".scan(/\d{4}-\d{2}-(?:XX|\d{2})/)
0 голосов
/ 13 марта 2012
"2007-01-XX 2008-01-01".scan(/(\d{4}-\d{2}-(XX|\d{2}))/).map(&:first)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...