【问题标题】:Regex: Match a pattern but exclude one case [duplicate]正则表达式:匹配模式但排除一种情况[重复]
【发布时间】:2014-09-05 19:36:54
【问题描述】:

我想包含从 a 到 m 的所有字符串。 这可以使用 [a-m]* 正则表达式来完成 但我不希望字符串以“deal_string”开头的情况。这个的正则表达式是什么?

测试用例:

assets/filename.ext           -> pass
deal_string/filename.ext      -> fail
deal_string.ext               -> fail
deal_string_1.ext             -> fail
deal_draft.txt                -> pass
assets_deal_string.txt        -> pass
bombay.txt                    -> pass
zombie.srt                    -> fail
some_deal_string.txt          -> fail
zobie_special_string.txt      -> fail

【问题讨论】:

  • 如果您想包含从am 的所有字符串,那么所有其他情况如何通过?除了special_string 之外,唯一应该通过的是assets/filename.extbombay.txt
  • @Yesuagg:你用什么语言/工具做这个正则表达式?
  • @hwnd:我的错。更新了测试用例。
  • @anubhava:Ruby on rails

标签: regex regex-negation regex-lookarounds


【解决方案1】:

在此处使用否定预测。如果要匹配所有以am 开头的字符串,不包括以“deal_string”开头的字符串,您可以使用:。

^(?!deal_string)[a-m].*$

Live Demo

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 2011-03-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多