代码之家  ›  专栏  ›  技术社区  ›  Arshdeep

只匹配所有“http”URL,不添加其他字符

  •  0
  • Arshdeep  · 技术社区  · 14 年前

    (http:\/\/.*?)['\"\< \>]
    
    
    (http:\/\/[-a-zA-Z0-9+&@#\/%?=~_|!:,.;\"]*[-a-zA-Z0-9+&@#\/%=~_|\"])
    

    第一个做得很好,但总是给最后一个额外的字符与匹配的网址。

    如:

    http://domain.com/path.html" 
    
    http://domain.com/path.html<
    

    通知

    " <
    

    3 回复  |  直到 12 年前
        1
  •  7
  •   Community datashaman    7 年前

    ['\"\< >] 你比赛的一部分,即:

    (http:\/\/.*?)(?=['\"\< >])
    

    ab 比赛 a(?=b) 比赛 a b ).

    工具书类

    相关问题


    捕获组选项

    并非所有风格都支持lookaround。更广泛的支持是抓捕群体。

    (a)b 仍然匹配 ,它还捕获 第1组。

    工具书类

    相关问题


    否定字符类选项

    根据需要,经常使用否定字符类比使用不情愿字符类要好得多 .*? (后面是一个lookahead来断言本例中的终止符模式)。

    让我们考虑一下匹配“两者之间的一切”的问题 A ZZ

    我们使用以下内容作为输入:

    eeAiiZooAuuZZeeeZZfff
    

    我们使用3种不同的模式:

             ___n
            /   \              n = negated character class
    eeAiiZooAuuZZeeeZZfff      r = reluctant
      \_________/r   /         g = greedy
       \____________/g
    

    工具书类

    相关问题

        2
  •  1
  •   R. Hill    14 年前

    正则表达式

    http:\/\/.*?(?=['\"\< >])
    
        3
  •  1
  •   Community datashaman    7 年前

    嗯,我可能会简单地说“继续,直到你得到一个不想要的角色”,就像这样:

    http://[^'"< >]*
    

    转义版本(基于Q-不确定这是什么引擎):

    http:\/\/[^'\"\< >]*
    

    然而 lookahead solution by polygenelubricants