URL от gsub не верны - PullRequest
       20

URL от gsub не верны

1 голос
/ 23 января 2010

У меня возникают некоторые проблемы при попытке проверить URL-адреса после их получения с помощью метода gsub.

С консоли работает нормально:

('http://ale.it' =~ URI::regexp).nil?.to_s
=> "false"

но если я запустил это, это не сработает:

"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/, ('\0' =~ URI::regexp).nil?.to_s)   
=> "true"

Как я могу получить правильные URL-адреса?

Ответы [ 2 ]

3 голосов
/ 23 января 2010

Это объяснение того, что делают ваши 2 примера. Хотя это не совсем ответ, это немного долго, чтобы вписаться в комментарий.

=~ возвращает позицию, в которой найдено совпадение, или nil, если совпадение не найдено.

В вашем первом примере 'http://ale.it' соответствует URI::regexp, начиная с позиции 0, так что вы получите 0.nil?, который равен false, преобразован в строку "false"

gsub во втором примере принимает 2 параметра, шаблон и строку замены и заменяет все совпадения шаблона заменой.

'\ 0' не соответствует URI::regexp, поэтому ('\0' =~ URI::regexp).nil? имеет значение true, а при to_s применяется строка «true».

"http://ale.it" соответствует /http[s]?:\/\/[^\s]+/, поэтому заменяется на" true ".

Вам придется расширить свой вопрос, чтобы объяснить, чего вы пытаетесь достичь.

0 голосов
/ 24 января 2010

я решил с помощью:

"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/) do |m|
 (m =~ URI::regexp).nil?.to_s) 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...