【问题标题】:How to Match with Regex "shortest match" in .NET如何与 .NET 中的正则表达式“最短匹配”匹配
【发布时间】:2012-04-10 17:26:23
【问题描述】:

我遇到了 Regex 的问题...我必须匹配共享点 URL。我需要匹配“最短”

类似:

http://aaaaaa/sites/aaaa/aaaaaa/

m = Regex.Match(URL, ".+/sites/.+/");

m.Value 等于整个字符串...

我怎样才能让它匹配

http://aaaaaaa/sites/aaaa/

没有别的了??

非常感谢!

【问题讨论】:

    标签: c# .net regex


    【解决方案1】:

    .+ 是贪心的,所以它会在停止之前匹配尽可能多的字符。改成.+?,比赛会尽快结束:

    m = Regex.Match(URL, ".+/sites/.+?/");
    

    【讨论】:

      【解决方案2】:

      尝试使正则表达式匹配除 / 之外的所有内容,而不是简单的所有内容。这是通过使用字符类原子[^] 的非形式来完成的。

      m = Regex.Match(URL, ".+/sites/[^/]+/");
      

      【讨论】:

      • 这仍然匹配一切,你需要让它变得懒惰我认为.+/sites/[^/]+?/
      • +1 你说得对,我认为这是我第一次测试时出现的复制粘贴错误(显然缺乏对启动的理解)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 2012-07-03
      • 2017-06-06
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多