检查正则表达式是否与RoR匹配?

时间:2011-10-13 03:47:20

标签: ruby regex

我有这个RoR代码如下;

1. error_regex = /\|FileName.exe\|((dlg|frm|cls).*?)/
2. error_regex.match(backtrace)
3. if !error_regex.nil?
4.    file_name = error_regex[1].sub!(/\.zip/, '')
5.    file_name
6. end

所以我的问题是,这里第3行发生了什么。 我基本上没有RoR经验,所以看看这段代码我就把它读成了 如果error_regex.nil不是nil则继续

但是什么?对于 我不能这样做

if !error_regex.nil

正则表达式都很好,我只想试着理解这种语法。

2 个答案:

答案 0 :(得分:3)

问号用于表示按惯例,该方法返回一个布尔值。对于Arrays,类似的示例是include?,如果数组中包含给定元素,则返回true,对于字符串,返回empty?(如果true则返回string == "" )和zero? for Integers(如果int为零,则返回true。)

所以它不是特定于Rails的 - 它是特定于Ruby的。

答案 1 :(得分:1)

问号是方法名称的一部分。没有它,你会称之为完全不同的方法。问题标记实际上并没有任何东西,它只是一个惯例,正如Chris Bunch所说。但是因为Ruby命名方法nil?,你必须这样称呼它。