Ruby表达

eri*_*223 1 ruby regex

(?:)
Run Code Online (Sandbox Code Playgroud)

这是一个有效的红宝石正则表达式,谁能告诉我它是什么意思?

谢谢

ram*_*ion 9

就像其他人所说的那样,它被用作正则表达式的非捕获语法,但是,它也是正则表达式之外的有效ruby语法.

在ruby中?:是冒号字符的整数值:

% irb
irb> ?:
=> 58
irb ":"[0]
=> 58
Run Code Online (Sandbox Code Playgroud)

添加括号不会更改值: (?:) == ?:

当你添加spaces(? :)时,它是三元运算符,它本质上是ruby中if/then/else的简写,所以语句( bool ? truish : falsy )相当于

if bool then 
  truish 
else 
  falsy 
end
Run Code Online (Sandbox Code Playgroud)