Ruby linux目录上的正则表达式
我试过这个问题的答案中的正则表达式: 这对我不起作用。如果我向脚本传递这样的目录/home/local/NKU/dixonc3/test/它将与正则表达式不匹配 所以我试着从一些简单的东西开始,比如如果一个目录以斜杠或波浪线开头,它就会通过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
^[~/].*$
即使我在下面的代码中将它用作正则表达式,如果我传递~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 '^[~/].*$'