Powershell基于正则表达式更改日期格式

时间:2018-04-03 15:39:39

标签: powershell

我正在尝试使用正则表达式在csv文件中查找日期并更改格式,因为此csv中有超过200列;不可能为每个日期手动列映射。

我之前的内容是以下

class Person(models.Model):
  name
  age

class Person_Address(models.Model):
  address
  number
  city
  state
  person = models.ForeignKey(Person)

class State_Schedules(models.Model):
  state
  hour
如果我想用当前日期替换所有日期,

工作正常,但这不是我的目标。我的目标是识别人类输入类型日期(mm / dd / yyyy)并将它们更改为数据库表在加载csv时期望的yyyy-mm-dd。

我该如何修改?或者有更好的方法来识别日期格式并更改格式吗?

1 个答案:

答案 0 :(得分:0)

答案:使用捕获组。我不知道你为什么在使用之前无法将正则表达式赋值给变量(因为我做了很多次):

$sf = '\\path\dept\Extracts\Date_Modified.csv'
$regex = '(\d{1,2})\/(\d{1,2})\/(\d{4})'

@(Get-Content -Path $sf) | 
    ForEach-Object { $_ -replace $regex, '$3-$1-$2' } | 
    Set-Content -Path $sf

特别注意,在替换语句中使用单引号,这样您最终不会尝试将$1插入到(可能为null)变量中。