[Ruby] Помогите разобрать ..
Тим Алексеевский
realtim на mail.ru
Вс Янв 30 20:37:22 MSK 2005
Vladimir Zdorovenco (Янв 30, 17:30):
> Не совсем понял про zero-width рег. выражения.. Если можно подробнее.
См. http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UN
> Надо вытащить из то строки, ключ/значение вида:
>
> КВ=[значение]; \w+=дата; \w+=путь
> [] - значит что может и небыть
>
> строка состоит из этих вот КВ, т.е:
>
> Set-Cookie=КВ, КВ, КВ
>
> я думал так, проще всего
>
> myhdr = 'GMAIL_AT=; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/,
> GMAIL_PREFS=; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/, GV=;
> Domain=gmail.google.com; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/,
> GV=; Domain=gmail.google.com; Expires=Fri, 28-Jan-05 23:56:04 GMT;
> Path=/gmail, GX=; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/gmail'
>
> myhdr.split(/,/).each { |v|
> puts v
> }
>
> но получается билиберда потому-что автор net/http.rb делит запятой =)
>
> Можно было в качестве разделителя успользовать - ;;
>
> тогда такое могло сработать; собственно я так и сделал, поменял в
> net/htto.rb запятую на ;;
Предлагаю так (как раз с использованием zero-width regexp-ов):
myhdr.split(/, (?=\w+=)/)
результат для этой строки:
=> ["GMAIL_AT=; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/",
"GMAIL_PREFS=; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/",
"GV=; Domain=gmail.google.com; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/",
"GV=; Domain=gmail.google.com; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/gmail",
"GX=; Expires=Fri, 28-Jan-05 23:56:04 GMT; Path=/gmail"]
Тим
--
++ If little else, the brain is an educational toy. ++
--
Подробная информация о списке рассылки Ruby