【问题标题】:Regex to match a string not followed by anything正则表达式匹配一个没有后跟任何内容的字符串
【发布时间】:2013-06-06 08:23:45
【问题描述】:

我试图找出一个正则表达式序列,它将匹配下面列表中的第一项但不匹配其他两项,{Some-Folder} 是可变的。

http://www.url.com/{Some-Folder}/
http://www.url.com/{Some-Folder}/thing/key/
http://www.url.com/{Some-Folder}/thing/119487302/

http://www.url.com/{Some-Folder}/{something-else}

基本上我希望能够检测到以下形式的任何内容:

http://www.url.com/{Some-Folder}/

http://www.url.com/{Some-Folder}

但不是

http://www.url.com/{Some-Folder}/{something-else}

目前为止

http://www.url.com/[A-Z,-]*\/^.

但这不匹配任何东西

【问题讨论】:

  • 行尾用 $ 表示。将其添加到末尾。

标签: regex


【解决方案1】:
http://www.url.com/[^/]+/?$

或者,在少数使用\Z 作为文本结尾的解析器中,

http://www.url.com/[^/]+/?\Z

【讨论】:

    【解决方案2】:

    我定制了一个regex I've used for URL parsing before,它并不完美,一旦 gTLD 得到更多使用,将需要更多的工作。无论如何,这里是:

    \bhttps?:\/\/[a-z0-9.-]+\.(?:[a-z]{2,4}|museum|travel)\/[^\/\s]+(?:\/\b)?
    

    您可能想要为您使用的任何语言添加不区分大小写的标志。

    演示:http://rubular.com/r/HyVXU30Hvp

    【讨论】:

      【解决方案3】:

      您可以使用以下正则表达式:
      (?m)http:\/\/www\.example\.com\/[^\/]+\/?$

      说明:

      • (?m) :设置 m 修饰符,使 ^$ 分别匹配行首和行尾
      • http:\/\/www\.example\.com\/ : 匹配 http://www.example.com/
      • [^\/]+ :匹配除/ 之外的任何内容一次或多次
      • \/? :可选匹配 /
      • $ : 声明行尾

      Online demo

      【讨论】:

        【解决方案4】:

        我一直在寻找这个确切问题的答案。 aaaaaa123456789 的回答几乎对我有用。但是 $ 和 \Z 没有用。我的解决方案是:

        http://www.url.com/[^/]+/?.{0}
        

        【讨论】:

          猜你喜欢
          • 2021-09-10
          • 2011-09-02
          • 2022-07-06
          • 2019-08-26
          • 1970-01-01
          • 1970-01-01
          • 2013-10-31
          • 2023-02-04
          • 1970-01-01
          相关资源
          最近更新 更多