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

与RegExp反向匹配

  •  0
  • fb55  · 技术社区  · 16 年前

    我目前正在雅虎的一个管道上工作!管。我有一个RegExp来匹配一个URL。现在,我需要匹配unmatched才能删除它,这样就只有我的URL了。我的RegExp是:

    [A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+
    

    编辑:为了澄清:我得到了一个字符串,需要得到其中的第一个URL。这就是为什么没有别的办法

    1 回复  |  直到 16 年前
        1
  •  0
  •   Tomalak    16 年前

    Yahoo管道支持regex replace(使用字符串regex模块)。

    然后匹配你想要的部分 保持 把它分成一组。您已经在这样做了,尽管您的正则表达式本身有点错误,但这里有一个至少纠正了明显错误的正则表达式:

    ([A-Za-z]+://[A-Za-z0-9_-]+\.[A-Za-z0-9_:%&?/.=-]+)
    ^          ^            ^
    |          |            |
    |          |            + lone dashes always at the end of the character class!
    |          +--- forward slashes do not need to be escaped             
    +--- capturing group 1, contents later accessible through $1
    

    然后用该组的内容替换整个字符串。只是放 $1 进入“替换为”字段。实际上,这会删除您不想保留的所有内容。

    一般来说,Regex总是 匹配 什么,从来没有 不匹配 (即“不包括”)东西。有一些正则表达式具有排除效应,但即使它们通过匹配也能实现。

    推荐文章