首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配有效Ruby局部变量名的Regex

匹配有效Ruby局部变量名的Regex
EN

Stack Overflow用户
提问于 2010-09-06 01:29:26
回答 6查看 4.4K关注 0票数 5

有人知道有效Ruby变量名的规则吗?它能用RegEx进行匹配吗?

更新:--到目前为止,我可以这样做:

代码语言:javascript
复制
^[_a-z][a-zA-Z0-9_]+$

这看上去对吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-06 01:40:24

标识符非常简单。它们以字母或下划线开头,并包含字母、下划线和数字。局部变量不能(或者不应该?)从大写字母开始,这样您就可以使用这样的正则表达式了。

代码语言:javascript
复制
/^[a-z_][a-zA-Z_0-9]*$/
票数 8
EN

Stack Overflow用户

发布于 2010-09-08 14:06:38

变量名有可能是unicode字母,在这种情况下,大多数现有的regexe不匹配。

代码语言:javascript
复制
varname = "\u2211" # => "∑" 
eval(varname + '= "Tony the Pony"') => "Tony the Pony"
puts varname # => ∑
local_variable_identifier = /Insert large regular expression here/
varname =~ local_variable_identifier # => nil

还请参阅Ruby1.9镐或玩Unicode中的“使用Unicode的乐趣”。

票数 4
EN

Stack Overflow用户

发布于 2010-09-06 01:43:09

根据names.html,Ruby变量包括:

名称是大写字母、小写字母或下划线("_"),后面跟着名称字符(这是大小写字母、下划线和数字的任何组合)。

此外,全局变量以美元符号开头,实例变量以单个符号开头,类变量以两个符号开头。

与以下所有内容匹配的正则表达式:

代码语言:javascript
复制
%r{
  (\$|@{1,2})?  # optional leading punctuation
  [A-Za-z_]     # at least one upper case, lower case, or underscore
  [A-Za-z0-9_]* # optional characters (including digits)
}x

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3648551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档