【问题标题】:I need to match a URL with a forward slash, but skip the first match我需要用正斜杠匹配 URL,但跳过第一个匹配项
【发布时间】:2014-09-03 17:33:27
【问题描述】:

我是正则表达式的新手,所以这可能很容易。

(更新的描述) 我需要一个正则表达式来跳过 URL 中第一次出现的正斜杠,但匹配所有后续出现的正斜杠的字符串。

当匹配时,返回的字符串应该是没有最后一个斜杠的整个 URL。

例如: rootURL 被跳过 rootURL/ 被跳过

rootURL/abc/ 匹配。这将返回 rootURL/abc(没有最后一个正斜杠)

rootURL/abc/123/ 匹配。这将返回 rootURL/abc/123(没有最后一个正斜杠)

rootURL/abc/456 不匹配。 谢谢!

【问题讨论】:

  • 你能展示你目前已经拥有的代码吗?
  • 这是我目前的表达式:^(.*)/ 除了它匹配第一个正斜杠之外,我不想要它。

标签: regex


【解决方案1】:

正则表达式只是简单的.*/.*/.*

【讨论】:

    【解决方案2】:

    如果你想匹配多个斜线,你可以使用这个正则表达式:

    \w+/(?:\w+/)+
    

    Working demo

    【讨论】:

    • 我更新了我对问题的描述。这似乎很接近,但我需要它返回没有最后一个正斜杠的字符串。请参阅我更新的示例。谢谢!
    • @craigAllens 已修复,您可以使用工作解决方案检查此链接 regex101.com/r/oK8xL9/2
    • 我测试了这个解决方案,它匹配正确,但是返回的字符串不应该有最后一个正斜杠。所以当 aa/bb/ 匹配时,它应该返回 aa/bb(没有结束斜线)。如果您有任何想法,请告诉我。谢谢!
    • 这工作得更好,但在测试时,我注意到它不适用于以下我需要它工作的 URL:server:8080/path/codes 你认为你可以让它适用于这种情况吗?再次感谢!
    【解决方案3】:

    ^rootURL/(.+)$ 点后的结束标记强制至少有一个字符。

    【讨论】:

      【解决方案4】:
      .*?\/(.*$)
      

      这行得通。查看演示。

      http://regex101.com/r/pP3pN1/30

      【讨论】:

        猜你喜欢
        • 2021-03-14
        • 1970-01-01
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多