正则表达式:匹配模式但排除一种情况[重复]
Posted
技术标签:
【中文标题】正则表达式:匹配模式但排除一种情况[重复]【英文标题】: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
【问题讨论】:
如果您想包含从a
到m
的所有字符串,那么所有其他情况如何通过?除了special_string
之外,唯一应该通过的是assets/filename.ext
和bombay.txt
@Yesuagg:你用什么语言/工具做这个正则表达式?
@hwnd:我的错。更新了测试用例。
@anubhava:Ruby on rails
【参考方案1】:
在此处使用否定预测。如果要匹配所有以a
到m
开头的字符串,不包括以“deal_string”开头的字符串,您可以使用:。
^(?!deal_string)[a-m].*$
Live Demo
【讨论】:
以上是关于正则表达式:匹配模式但排除一种情况[重复]的主要内容,如果未能解决你的问题,请参考以下文章