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

正则表达式来匹配Google视频URL中的两个视频ID之一

  •  2
  • Iceland_jack  · 技术社区  · 16 年前

    我需要从谷歌视频网址上获取视频ID。我需要匹配两种不同类型的URL:

    http://video.google.com/videoplay?docid= #

    -3498228245415745977

    video.google.com/videoplay?docid=-3498228245415745977#docid= 2728972720932273543

    我需要匹配的地方 2728972720932273543 . 有什么好的正则表达式可以匹配这个吗?

    到目前为止我得到的是: @"docid=(-?\d{19}+)"

    如果这改变了什么的话,我就用C#(我很少有经验)。

    @"[\?&]v=([^&#])"; ),红管( @"/(\d{1,6})" )还有维米欧( @"/(\d*)" ).

    我不希望用户输入完整的网址,因此不匹配 ^http://\\.?sitename+\\.\\w{2,3}

    2 回复  |  直到 16 年前
        1
  •  2
  •   Alan Moore Chris Ballance    16 年前

    下面的正则表达式使用所谓的负前瞻来确保匹配后的字符串中没有包含#docid的部分:

    docid=(-?\d{19}(?!\#docid=))
    

    这个 (?!\#docid=) http://www.regular-expressions.info/lookaround.html

    希望这对你有帮助

    编辑: "The Regulator 2.0" 来自sourceforge。它是正则表达式的设计和测试工具。当我开发正则表达式时,我发现它非常有用。

        2
  •  0
  •   Amit Kumar Gupta    15 年前

    使用此选项:

    docid=-([0-9]*)
    

    结果

    Array
    (
        [0] => docid=-3498228245415745977
        [1] => 3498228245415745977
    )
    

    我用Java、PHP、awk和perl测试过它。