我需要从[02/24/2016][03:37:27.996]
中提取时间戳。
例如,匹配:
[02/24/2016][03:37:27.996]
应提取:
02/24/2016 03:37:27.996
分别返回日期和时间:
\[(?<date>[^\]]*)\]\[(?<time>[^\]]*)\]
这是Rubular example,供您轻松参考。
我正在寻找如何将这两个组(日期和时间)组合成一个时间戳。
答案 0 :(得分:1)
由于正则表达式的工作方式,您无法使用模式将信息提取为一个结果或字符串。您将获得两次捕获:
UPDATE A
SET [Miktar] = B.[Miktar]
FROM [Retail].[dbo].[tb_StokDurum] A INNER JOIN
(SELECT DISTINCT [UrunID], SUM([Miktar]*-1) AS [Miktar]
FROM [Retail].[dbo].[tb_SatisDetay]
GROUP BY [UrunID]) B
ON (A.UrunID = B.[UrunID] AND В.Depo = (SELECT TOP 1 Depo FROM [Retail].[dbo].[tb_StokDurum] WHERE Depo != 'AZ01' AND Depo != '0'))
你可以使用:
'[02/24/2016][03:37:27.996]'.match(/\[([^\]]+)\]\[([^\]]+)\]/).captures # => ["02/24/2016", "03:37:27.996"]
或包含干预'[02/24/2016][03:37:27.996]'.match(/\[([^\]]+)\]\[([^\]]+)\]/).captures.join(' ') # => "02/24/2016 03:37:27.996"
字符的一个捕获:
"[]"
你可以通过其他方式做到:
'[02/24/2016][03:37:27.996]'.match(/\[([^\]]+\]\[[^\]]+)\]/).captures # => ["02/24/2016][03:37:27.996"]
,使用简单的切片和'[02/24/2016][03:37:27.996]'[1..-2].sub('][', ' ') # => "02/24/2016 03:37:27.996"
,我就是这样做的,或者:
sub
当人们了解正则表达式时,一切看起来都是使用它们的绝佳机会,一切都是用正则表达式锤子解决问题的机会。不幸的是,这并不接近事实。它们功能强大,但如果使用不当,它们会降低代码速度,它们会引入非常微妙的错误和逻辑漏洞,并且它们会使代码更难调试,因为随着它们变得越来越复杂,它们也会变得更加复杂。保持它们的简洁性,或者学习如何使用为您组装它们的代码生成它们。