在Ruby中创建URL排列的正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ruby中创建URL排列的正则表达式相关的知识,希望对你有一定的参考价值。

  1. # return 4 urls, with and without trailing slash, with and without www
  2. # useful for matching urls passed as params into some function,
  3. # "does this url exist?"... need to make sure you check permutations
  4. def url_permutations(url)
  5. url, params = url.split("?")
  6. # without_trailing_slash, with www
  7. a = url.gsub(//$/, "").gsub(/http(s)?://([^/]+)/) do |match|
  8. protocol = "http#{$1.to_s}"
  9. domain = $2
  10. domain = "www.#{domain}" if domain.split(".").length < 3 # www.google.com == 3, google.com == 2
  11. "#{protocol}://#{domain}"
  12. end
  13. # with_trailing_slash, with www
  14. b = "#{a}/"
  15. # without_trailing_slash, without www
  16. c = a.gsub(/http(s)?://www./, "http#{$1.to_s}://")
  17. # with_trailing_slash, without www
  18. d = "#{c}/"
  19.  
  20. [a, b, c, d].map { |url| "#{url}?#{params}"}
  21. end
  22.  
  23. puts url_permutations("http://google.com/search?q=http://google.com").inspect
  24. #=> [
  25. "http://www.google.com/search?q=http://google.com",
  26. "http://www.google.com/search/?q=http://google.com",
  27. "http://google.com/search?q=http://google.com",
  28. "http://google.com/search/?q=http://google.com"
  29. ]

以上是关于在Ruby中创建URL排列的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中创建正则表达式 [关闭]

在 Perl 中创建正则表达式以提取值

Django中的Slug Url正则表达式

使用正则表达式库在 C++ 中创建词法分析器?

使用正则表达式从文件名中创建一个包含多个可能字符串的列表[重复]

仅字符 a-z、A-Z 的正则表达式