检查一个字符是否是{{[使用正则表达式

时间:2016-11-07 23:49:06

标签: ruby regex

我想检查一个角色是([{中的一个 我可以这样做

if char == "{" ||  char == "(" || char == "["

但我想使用正则表达式来实现这一目标 怎么做?

3 个答案:

答案 0 :(得分:2)

非常简单,你只需将它们添加到一个集合中:

BRACKETS = /[\{\(\[]/

if (char.match(BRACKETS))
  # ...
end

正则表达式[...]中的位置表示一组匹配的单个字符。

要测试它只那种类型的字符:

BRACKETS = /\A[\{\(\[]\z/

现在,不使用正则表达式对代码进行最简单的重构就是:

case (char)
when '{', '(', '['
  # ...
end

这可能会或可能不会比正则表达式更快,因此如果性能是关键,您可能也想测试该方法。

答案 1 :(得分:2)

由于[是一个特殊字符,因此您必须在正则表达式分组[]中将其转义。

if char.match /[({\[]/
  # Your code here
end

如果找到该字符#match将返回MatchData个对象。如果找不到匹配的字符,则#match将返回nil

答案 2 :(得分:1)

你可以检查char只是一个带正则表达式的括号:

if char[/\A[({\[]\z/]
  #...
end