什么是Ruby检查文件格式的有效方法?

时间:2017-07-12 21:50:31

标签: ruby regex

我有一个类似的文件:

Fruit.Store={
    #blabla
    "customer-id:12345,item:store/apple" = (1,2);   #blabla
    "customer-id:23456,item:store/banana" = (1,3);   #blabla
    "customer-id:23456,item:store/watermelon" = (1,4);
    #blabla
    "customer-id:67890,item:store/watermelon" = (1,6);
    #The following two are unique
    "customer-id:0000,item:store/" = (100, 100);
    #
    "" = (0,0)
};

除评论外,每行的格式相同:customer-iditem:store/是固定的,customer-id是5位数字。最后两个记录是唯一的。我怎样才能确保文件格式正确?我正在考虑使用第一个特殊行Fruit.Store={的标志,并且以下行将每行分成","和" =",如果分割线不正确,请将它们与最后两个记录匹配。我想用它来使用Ruby。有什么建议?谢谢。

我也在考虑为格式使用正则表达式,并写道:

^"customer:\d{5},item:store\/\D*"=\(\d*,\d*\);

但我想结合这两种情况(评论和不评论):

^"customer:\d{5},item:store\/\D*"=\(\d*,\d*\);$

^"customer:\d{5},item:store\/\D*"=\(\d*,\d*\);#.*$
我怎么能这样做?谢谢

1 个答案:

答案 0 :(得分:0)

使用正则表达式可能是一个不错的选择,因为每一行都有固定的格式;你几乎得到它,你的正则表达式只需要一些调整:

(?:#.*|^"customer-id:\d{5},item:store\/\D*" *= *\(\d*, *\d*\); *(?:#.*)?)$

这是您当前正则表达式中添加的内容:

  • 选择成为评论行(#.*|)常规行(|之后的所有内容)。
  • 检查=之前和之后的可能空格,在逗号(,)之后用于分隔括号中的数字和行的末尾。
  • 选择在该行的末尾添加另一条评论((?:#.*)?)。

因此,只需将每一行与此正则表达式进行比较,即可检查正确的格式。