【问题标题】:How to match URLs in Ruby 1.8.7 using Regex [duplicate]如何使用正则表达式匹配 Ruby 1.8.7 中的 URL [重复]
【发布时间】:2014-11-15 13:29:54
【问题描述】:

我正在做一个需要我匹配 URL 的项目。我对正则表达式很糟糕。但我相信结构如下 -

  • 字母和符号,除了可以重复 1 到任意次数的空格,
  • 紧跟一个点 0 或 1 次,
  • 后跟字母和符号,空格除外,1 到多次,
  • 后跟一个点“.” ,
  • 后跟有效扩展名列表(如 com、org、in(将在此处指定))
  • 后跟一个“/” 0 或 1 次
    • 如果为 0,则紧跟空格
    • 如果是 1 ,那么除了
    • 之外的单词和符号

我如何为此形成正则表达式

【问题讨论】:

  • @AvinashRaj 这个Regex 我试过了。只是意识到它接受这样的字符串。然后我意识到我可以匹配 .com,.org,in 和所有..
  • Ruby 使用 perl 风格的正则表达式,the url spec 的正则表达式比你想象的更难。如果您不确定,您可能会更好地使用其他人为您构建的类似上面建议的答案。
  • @ShaneQful 不处理像 fb.me 9gag.com 这样的 URL。只需要匹配在 twitter 和 http://*.*.*/* 和 *.*.*/*(无空格)中找到的 URL
  • @AvinashRaj 我试过这个regex。但史诗匹配失败
  • 为什么是 python 和 ruby​​ 标签?

标签: python ruby regex


【解决方案1】:

Regex 不太适合解析语法和验证输入。正则表达式仅用于字符串模式匹配。

使用解析器来验证输入的语法,在你的情况下尝试ruby's URI。它是 1.8.7 默认库的一部分

【讨论】:

    【解决方案2】:

    您可以尝试以下正则表达式来匹配满足上述条件的 URL。

    (?:https?:\/\/)?[^\W\s_]+\.?[^\W\s_]+\.(?:com|org|me)(?:\/[^\W\s_]+)?
    

    DEMO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 2012-10-23
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多