2012-10-22 336 views
0

我必须要求检查值91981552e1775310VgnVCM100000a2b6140a____;standard;212.58.244.70;Oct-22-2012;24353teehdtehg;,其中日期和24353teehdtehg是动态的。匹配正则表达式

我该如何更通用一些,以便检查expected_value =~/actual_value/,排除Ruby中的动态值。

+4

为什么[是一个正则表达式正确的解决方案?](http://www.codinghorror.com/blog/2008/06/regular-expressions-now - 您 - 拥有 - 两problems.html)。当然,他们是代码化的,但是如果你的目标发生了变化,你有没有更好地处理你的时间,而不是找到一个能够工作并且会继续工作的东西?我会在字符串上使用'split(';')'并继续前进。 –

回答

4

如果可能的话,我不会使用正则表达式。您似乎有一个输入字符串,可以很容易地进行修改,并且可以在不使用正则表达式的情况下与预期值进行比较。

str = "91981552e1775310VgnVCM100000a2b6140a____;standard;212.58.244.70;Oct-22-2012;24353teehdtehg;" 

actual_value = str.split(';')[0..-3].join(';') 
# "91981552e1775310VgnVCM100000a2b6140a____;standard;212.58.244.70" 

然后,只需比较两个

expected_value == actual_value 
+0

不错,谢谢凯尔! – Kayen

0

我想你可以使用这样的:这取决于该字符串实际上可能

/91981552e1775310VgnVCM100000a2b6140a____;standard;212\.58\.244\.70;(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}-\d{4};\d{5}[a-z]{9};/