【问题标题】:Rails write regular expression to get folder nameRails编写正则表达式以获取文件夹名称
【发布时间】:2017-02-13 08:18:29
【问题描述】:

这是一个简单的问题,我想在Rspec测试后清理载波图片。

图片文件在public/NewsletterImage_809abef471699025f5bb396d04dfd4f0"NewsletterImage后面的字符串会是随机字符串。

我想通过regular expression获取文件夹名称,但是没有成功。

我试过了

Dir["#{Rails.root}/public/^NewsletterImage"]
=> []
Dir["#{Rails.root}/public/NewsletterImage.*"]
=> []

我很困惑,因为我使用Rubular,它可以提取这些名称。

【问题讨论】:

  • NewsletterImage你要解压的文件夹名吗?
  • 文件夹名称将为NewsletterImage_abcNewsletterImage_def或`NewsletterImage_xyz。我需要得到所有这些。
  • 试试/NewsletterImage_.+/ 作为你的正则表达式。
  • 我发现Dir["#{Rails.root}/public/NewsletterImage*"] 可以工作,但为什么其他人会失败?
  • 我不确定这个输入是否正确,但Dir["#{Rails.root}/public//NewsletterImage_.+/"] 返回空数组。

标签: ruby regex rspec


【解决方案1】:

Dir[] 不采用正则表达式,它采用 shell 通配符表达式。这些可能看起来很相似,尤其是 .* 是两者的共同特征,但它们并不相同。

如果您想使用正则表达式,您必须获取所有条目,然后使用 grep 之类的内容过滤它们。

【讨论】:

  • 所以.* 不小心匹配了两个正则表达式。谢谢,我会试试grep
  • 是的,通配符中的.* 表示“一个点后跟零个或多个任意字符”,而正则表达式中的.* 表示“零个或多个任意字符”。混乱是可以理解的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2012-10-21
  • 2012-10-18
  • 2011-09-07
  • 1970-01-01
  • 2013-03-18
  • 2013-09-10
相关资源
最近更新 更多