【问题标题】:Finding match by negating (based on a missing string)通过否定查找匹配(基于缺少的字符串)
【发布时间】:2016-09-03 05:24:53
【问题描述】:

我一直在谷歌上搜索这个。 我想要实现的是下一个: 如果 MIME 不是特定类型,我必须检查正则表达式条件。

例如,我收到了下一条消息:

image/png, image/jpeg, document/pdf

我只想检测document/pdf 部分 ,这是一个MIME类型,一个字符串,不以image/开头

但无论我多么努力地查看、尝试和使用 RegExBody 软件,我都完全无法匹配它..

我绝望地发布了这个,希望专家正则表达式可以帮助我..

我尝试了很多方法,主要是: 找出非图像类型,不管有没有。

它只是拒绝工作。 我尝试了积极的前瞻和消极的前瞻。但我可能不知何故用错了。我无法发布这些示例,因为我已经尝试并删除了很多。似乎真正接近工作的是\b(?:(?!image/\w+))\w+\b,但它只是坚持选择不匹配模式的第二部分。 如果我使用:image/png 它得到:png 这意味着它仍然会返回 true,尽管我的意思是忽略 image/ 类型..

【问题讨论】:

  • 请向我们展示样本输入和预期输出/结论。
  • 请不要在此处的标题中添加 [已解决] - 对答案的勾选足以将问题标记为已解决。谢谢!
  • 嗨,怎么疼?

标签: regex string conditional-statements mime


【解决方案1】:

此搜索正则表达式替换为 '' 将返回 document/pdf。

(?:image\/\w+)[,\s]*

【讨论】:

    【解决方案2】:

    您应该在\w+ 之后添加一个/\w+ 部分以匹配您的子字符串:

    \b(?!image/)\w+/\w+\b
    

    regex demo

    图案细节:

    • \b - 字边界
    • (?!image/) - 如果在当前位置之后有image/,则匹配失败
    • \w+/\w+ - 1+ 个单词字符,后跟 / 和 1+ 个单词字符
    • \b - 结尾的单词边界

    【讨论】:

    • 非常感谢!快速回答+它正在工作! :)) 我正在尝试选择您的答案作为正确答案
    • 你有,如果你也觉得我的回答有帮助,请考虑投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多