正则表达式:匹配一个模式但排除一种情况

4

我希望包含所有以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

1
如果你想包括所有以 am 开头的字符串,那么其他所有情况都如何通过呢?除了 special_string 之外,唯一应该通过的是 assets/filename.extbombay.txt - hwnd
@Yesuagg:你用什么语言/工具进行正则表达式? - anubhava
@hwnd:我的错,已更新测试用例。 - yesuagg
@anubhava:Ruby on Rails - yesuagg
1个回答

5

在这里使用负向先行断言。如果您想匹配所有以am开头的字符串,但排除以“deal_string”开头的字符串,可以使用:

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

Live Demo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接