【问题标题】:Regex - Match everything after second occurence正则表达式 - 在第二次出现后匹配所有内容
【发布时间】:2014-10-19 16:48:12
【问题描述】:

我有以下字符串:

"http://sprzedajemy.pl/http://soloch.sprzedajemy.pl/renault-scenic-i-grafitowy,10395187"

现在,我想匹配第二次出现“http://”之后的所有内容,我这样尝试但没有成功:

/(http:\/\/){2}(.+)/

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails ruby regex


    【解决方案1】:

    您对组http:// 进行了两次量化,而不是跳到第二次出现。使用这个正则表达式:

    /^(?:http:\/\/(.+)){2}/
    

    这是regex demo

    【讨论】:

    • 如果这里有 https,你的正则表达式就不起作用 :)
    • @vks 如果有必要,我们可以通过将http 替换为(?:https?|ftp) 来扩展正则表达式...但我想遵循规范。
    【解决方案2】:

    尝试下面的正则表达式来匹配第二个http://之后的字符串,

    (?<=http:\/\/)(?:(?!http:\/\/).)*$
    

    DEMO

    如果您想捕获字符串,请尝试以下操作,

    (?<=http:\/\/)((?:(?!http:\/\/).)*)$
    

    DEMO

    【讨论】:

      【解决方案3】:
        http.*?http\:\/\/(.*)
      

      应该这样做。

      查看演示。

      http://regex101.com/r/bZ9kJ0/1

       (?!http.*?http.*)http\:\/\/(.*)
      

      如果它在第一个位置,则使用它来忽略 https。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-19
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 2016-03-18
        • 2013-04-18
        • 2018-06-28
        相关资源
        最近更新 更多