powershell从字符串或其他建议中提取数据

powershell从字符串或其他建议中提取数据,powershell,replace,find,character,Powershell,Replace,Find,Character,我正在编写一个脚本,它从另一个工具生成的excel文档中读取数据。它以下面列出的格式列出了文件年限。我的问题是我想处理每个单元格的值,并根据该值更改单元格的颜色。因此,任何超过1年的时间变为红色,90天以上的时间变为黄色\橙色 因此,经过一点研究,我选择使用if语句来确定它何时大于0年,这似乎很好,但是,当我到达天数部分时,我不确定如何在到达y时仅提取每个单元格中d左侧的数字部分,如果它刚刚停止,或者可能仅在$\ucode>包含d时才读取左侧数字,那么如果该值是-gt,我可以进一步处理90?我不

我正在编写一个脚本,它从另一个工具生成的excel文档中读取数据。它以下面列出的格式列出了文件年限。我的问题是我想处理每个单元格的值,并根据该值更改单元格的颜色。因此,任何超过1年的时间变为红色,90天以上的时间变为黄色\橙色

因此,经过一点研究,我选择使用
if
语句来确定它何时大于0年,这似乎很好,但是,当我到达天数部分时,我不确定如何在到达
y
时仅提取每个单元格中
d
左侧的数字部分,如果它刚刚停止,或者可能仅在
$\ucode>包含
d
时才读取左侧数字,那么如果该值是
-gt,我可以进一步处理90
?我不确定如何提取可变长度字符串,只有当它们是字符左边的数字时。我考虑使用以下方法的组合来查找字符并返回到
y
或其他内容

可能的年龄格式:

  • 13y170d
  • 3y249d
  • 8h7m
  • 1y109d
  • 1y109d
  • 1y109d
  • 5d2h
  • 3y281d
  • 3y184d
  • 11y263d
  • 7m25s
  • 1h14m

    [regex]$years=“\d{1,3}[0-9]y”

    [regex]$days_90=“\d{0,3}[0-9]d”

基于年龄(年)有条件地格式化/着色行 根据年龄(90天以上)有条件地格式化/着色行
你所追求的是积极的向前看和向后看。它有效地获取两个字符或集合之间的文本。如果您有一组格式一致的数据要处理,那么这将非常方便

[regex]$days_90 = '(?<=y).*?(?=d)'
[regex]$days_90='(?
if ( $( A$_ -match "$days_90") -eq $True ) { New-ConditionalText -Text Yellow }
[regex]$days_90 = '(?<=y).*?(?=d)'