我有一个SQL SELECT与许多行,每行看起来是这样的转储:正则表达式不匹配的数据和日期
07/11/2011 16:48:08,07/11/2011 16:48:08,'YD','MANUAL',0,1,'text','text','text','text',,,,'text',,,0,0,
我想要做的两件事情到每一行:
- 替换所有日期Oracle的
sysdate
函数。日期也可以不带小时(如07/11/2011
)。 - 与
null
串
这里替换所有空值是我的尝试:
$_ =~ s/,(,|\n)/,null$1/g; # Replace no data by "null"
$_ =~ s/\d{2}\/\d{2}\/d{4}.*?,/sysdate,/g; # Replace dates by "sysdate"
但是,这将改变字符串:虽然我希望它是
07/11/2011 16:48:08,07/11/2011 16:48:08,'YD','MANUAL',0,1,'text','text','text','text',null,,null,'text',null,,0,0,null
sysdate,sysdate,'YD','MANUAL',0,1,'text','text','text','text',null,null,null,'text',null,null,0,0,null
我不明白为什么日期不匹配,为什么一些,,
不被替换为null
。
任何见解欢迎,提前致谢。
请提供正确的预期输出。 – FailedDev
对我来说你的日期替换工作,但是,你的空问题似乎是第二个逗号实际上是由第一个匹配消耗的,所以当它继续寻找下一个匹配时,它从逗号开始,然后离开你与2在一个行。 – Lucas
这些'文本'字段可以包含带引号的逗号吗? – TLP