我想检查一个角色是(
,[
,{
中的一个
我可以这样做
if char == "{" || char == "(" || char == "["
但我想使用正则表达式来实现这一目标 怎么做?
答案 0 :(得分:2)
非常简单,你只需将它们添加到一个集合中:
BRACKETS = /[\{\(\[]/
if (char.match(BRACKETS))
# ...
end
正则表达式[...]
中的位置表示一组匹配的单个字符。
要测试它只那种类型的字符:
BRACKETS = /\A[\{\(\[]\z/
现在,不使用正则表达式对代码进行最简单的重构就是:
case (char)
when '{', '(', '['
# ...
end
这可能会或可能不会比正则表达式更快,因此如果性能是关键,您可能也想测试该方法。
答案 1 :(得分:2)
由于[
是一个特殊字符,因此您必须在正则表达式分组[]
中将其转义。
if char.match /[({\[]/
# Your code here
end
答案 2 :(得分:1)
你可以检查char只是一个带正则表达式的括号:
if char[/\A[({\[]\z/]
#...
end