我想从上面的语句中“提取”文件名。假设我有 src="/images/9/94/folder%2FGraph.JPG",我希望将文件夹 %2FGraph.JPG 提取出来。
如果要提取src
参数内部的内容:
foo = 'src="/images/9/94/folder%2FGraph.JPG"'
foo[/^src="(.+)"/, 1]
=> "/images/9/94/folder%2FGraph.JPG"
这将返回一个不带括号的字符串。
这是第一个的方法:
bar = "VALUES(3,5,1,43,'/images/e/e5/Folder%2FOrders%2FFinding_Orders%2FView_orders3.JPG','1415',NULL);"
bar.split(',')[4][1..-2]
=> "/images/e/e5/Folder%2FOrders%2FFinding_Orders%2FView_orders3.JPG"
并非编程中的所有内容都是正则表达式问题。实际上,在我看来,某些东西不是模式的候选者。例如,第一个例子可以写成:
foo.split('=')[1][1..-2]
第二个:
bar[/'(.+?)'/, 1]
我们的想法是使用最干净、最清晰和易于理解的那个。
如果您想要的只是文件名,则使用旨在仅返回文件名的方法。
使用上述方法之一并将其输出传递给File.basename
. Filename.basename
仅返回文件名和扩展名。