如何创建一个匹配模式的正则表达式,除了Ruby中的一些字符串?

时间:2010-08-17 18:18:59

标签: ruby regex

我在Ruby中工作,并且必须为以下任务创建一个正则表达式,因为我正在使用其他人的gem,它使用此正则表达式来匹配要在文本文件中处理的字段。我需要匹配字符串的开头,任何字符集和下划线,然后是不是1,2,9或10的任何多位整数,以及字符串的结尾。
即,我希望以下内容匹配:

foo_4
bar_8
baz_120

但不是:

foo_1
bar_9
baz_10

我试过

/^.+_(^(1|2|9|10))$/

但是它显然不起作用^只是“否定”括号中的字符,而不是子匹配。

1 个答案:

答案 0 :(得分:5)

在字符类之外,^符号表示行首。我想你想要一个negative lookahead

/^.+_(?!(?:1|2|9|10)$)\d+$/

rubular上查看此操作。