【问题标题】:Regex Negative lookahead not work as expected正则表达式负前瞻无法按预期工作
【发布时间】:2013-10-24 07:23:17
【问题描述】:

我有以下文字:

 #arkLogo {
            background-image: url("static/images/arklogo.png");
        }   

我已经创建了一个正则表达式来提取所有 url,比如

static/images/arklogo.png

我的正则表达式是:

(?!url\s*\()("|').*(?=("|')\))

但它会将 url 与第一个引号匹配,如下所示:

"static/images/arklogo.png

我尝试移动前瞻范围以捕获这样的引用

(?!url\s*\(("|')).*(?=("|')\))

但在这种情况下,它会计算整行

background-image: url("static/images/arklogo.png");

我找到了解决方案,我只需要使用积极的后视,像这样:

(?<=url\s*\(("|')).*(?=("|')\))

【问题讨论】:

  • 请随意为您自己的问题添加答案,而不是在其中编辑解决方案。这是 SO 公认的做法,即使感觉有点像“自拍”。其他人也可能会提出警告或更好的方法。
  • 而被投票支持的答案会给 分!

标签: c# regex lookahead


【解决方案1】:

我找到了一个解决方案,我只需要使用正面的lookbehind,就像这样:

(?<=url\s*\(("|')).*(?=("|')\))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2023-03-18
    • 2018-02-05
    • 2021-10-11
    • 2011-10-14
    • 2010-12-17
    相关资源
    最近更新 更多