Ruby linux目录上的正则表达式

Ruby linux目录上的正则表达式,ruby,regex,linux,Ruby,Regex,Linux,我试过这个问题的答案中的正则表达式: 这对我不起作用。如果我向脚本传递这样的目录/home/local/NKU/dixonc3/test/它将与正则表达式不匹配 所以我试着从一些简单的东西开始,比如如果一个目录以斜杠或波浪线开头,它就会通过 ^[~/].*$ 即使我在下面的代码中将它用作正则表达式,如果我传递~tilde,它也会给我一个错误 ./rename.rb:23:in `exists?': can't convert nil into String (TypeError) fr

我试过这个问题的答案中的正则表达式:

这对我不起作用。如果我向脚本传递这样的目录/home/local/NKU/dixonc3/test/它将与正则表达式不匹配

所以我试着从一些简单的东西开始,比如如果一个目录以斜杠或波浪线开头,它就会通过

^[~/].*$
即使我在下面的代码中将它用作正则表达式,如果我传递~tilde,它也会给我一个错误

./rename.rb:23:in `exists?': can't convert nil into String (TypeError)
    from ./rename.rb:23:in `rename'
    from ./rename.rb:33:in `<main>'

您的正则表达式只匹配一个字符~或/或不匹配。应该是:

dirRegex = Regexp.new '^[~/].*$'

匹配开头字符~或/和其他字符。

能否显示第23行?我认为问题在于这一行。正如Alex所问,你在某处有一个nil值。请用exists?方法调用它。此外,您可以将正则表达式更改为dirRegex=/^[~/]/,表示法更短,并且不需要写着“在结束前还有其他内容”的。*$部分。
dirRegex = Regexp.new '^[~/].*$'