我有一个类似的文件:
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-id
和item: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*\);#.*$
我怎么能这样做?谢谢
答案 0 :(得分:0)
使用正则表达式可能是一个不错的选择,因为每一行都有固定的格式;你几乎得到它,你的正则表达式只需要一些调整:
(?:#.*|^"customer-id:\d{5},item:store\/\D*" *= *\(\d*, *\d*\); *(?:#.*)?)$
这是您当前正则表达式中添加的内容:
#.*
)或(|
)常规行(|
之后的所有内容)。=
之前和之后的可能空格,在逗号(,
)之后用于分隔括号中的数字和行的末尾。(?:#.*)?
)。因此,只需将每一行与此正则表达式进行比较,即可检查正确的格式。