ruby - 如何创建一个与 Ruby 中除某些字符串之外的模式匹配的正则表达式?

标签 ruby regex

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

foo_4
bar_8
baz_120

但不是:

foo_1
bar_9
baz_10

我试过了

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

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

最佳答案

在字符类之外,^ 符号表示行的开头。我想你想要一个negative lookahead相反:

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

rubular上查看它的实际应用.

关于ruby - 如何创建一个与 Ruby 中除某些字符串之外的模式匹配的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505626/

相关文章:

javascript - 正则表达式货币验证

javascript - 匹配正则表达式德语

javascript - 全局搜索时 JavaScript 中的 RegExp 错误

sql - Ruby + Sequel - 将数组序列化为文本数组的查询

使用 method_missing 进行 Ruby 元编程来制作 HTML DSL

php - 如何从 php 文件中读取所有数值?

Python Pandas 使用正则表达式从包含字符串的列中提取单词

ruby - Object 上的私有(private)实例方法的行为与 Ruby 中其他类中的不同

ruby - 使用 twitter gem,如何从 Twitter::REST:Tweets.retweet 转推 Twitter::Tweet?

ruby - 正则表达式去除符号而不是 Ruby 中的外来字符