2013-11-27 3 views
-3

У меня есть строкаИзвлечь определенную часть регулярного выражения строки?

/пример/Двойник в-он/дата-2014-08-23-на-2014-08-30

и мне нужно регулярное выражение, так что я могут получить следующие 4 элемента из этой строки:

part1: пример часть2: смотрите-в-это date_from: 2014-08-23 date_to: 2014-08-30

Любая помощь по регулярному выражению?

ответ

1
string = "/example/look-into-it/date-2014-08-23-to-2014-08-30" 

data = s.match(/\/(?<part1>.*)\/(?<part2>.*)\/date\-(?<date_from>.*)\-to\-(?<date_to>.*)/) 
=> #<MatchData 
"/example/look-into-it/date-2014-08-23-to-2014-08-30" 
part1:"example" 
part2:"look-into-it" 
date_from:"2014-08-23" 
date_to:"2014-08-30"> 
md[:part1] 
=> "example" 
1
s = "/example/look-into-it/date-2014-08-23-to-2014-08-30" 
md = s.match(/\/(.*?)\/(.*?)\/date\-(.*)\-to\-(.*)/) 
p md[1..4] 

результат:

["example", "look-into-it", "2014-08-23", "2014-08-30"] 
0

Немного больше, но это тот случай, когда регулярное_выражение может просто сделать все труднее читать:

s = "/example/look-into-it/date-2014-08-23-to-2014-08-30" 
s.slice!(0) # Remove first '/' 

words, dates = s.split('/date-') 
part1, part2 = words.split('/') 
date_from, date_to = dates.split('-to-') 
Смежные вопросы