正则表达式 – 开关/案例陈述

前端之家收集整理的这篇文章主要介绍了正则表达式 – 开关/案例陈述前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为tabLength的函数,它应该返回一个字符串.这是为了在文本文档中进行格式化.

任何人都可以检查我的switch语句,看看为什么我在第6行收到错误.这就是switch语句正在经历的“情况”.

Function tabLength ( $line ) {
    $lineLength = $line.Length

    switch -regex ( $lineLength ) {
        "[1-4]" { return "`t`t`t" }
        "[5-15]" { return "`t`t" }
        "[16-24]" { return "`t" }
        default { return "`t" }
    }
}

错误信息:

Invalid regular expression pattern: [5-15].
At C:\Users\name\desktop\nslookup.ps1:52 char:11
+         "[5-15]" <<<<  { return "" }
    + CategoryInfo          : InvalidOperation: ([5-15]:String) [],RuntimeException
    + FullyQualifiedErrorId : InvalidRegularExpression

它只发生在通过[5-15]发送的值.

[5-15]不是有效的正则表达式字符类.你匹配字符串,而不是数字,所以[5-15]基本上是说“匹配’5’到’1’或’5’中的单个字符,这不是你想要的.

如果删除该中间条件,[16-24]应该同样失败.

尝试不使用正则表达式的switch语句,但使用脚本块作为条件,以便您可以使用范围进行测试,如下所示:

Function tabLength ( $line ) {
    $lineLength = $line.Length

    switch ( $lineLength ) {
        { 1..4 -contains $_ } { return "`t`t`t" }
        { 5..15 -contains $_ } { return "`t`t" }
        { 16..24 -contains $_ } { return "`t" }
        default { return "`t" }
    }
}

在powershell 3中,您可以使用-in运算符并反转顺序:

Function tabLength ( $line ) {
    $lineLength = $line.Length

    switch ( $lineLength ) {
        { $_ -in  1..4 } { return "`t`t`t" }
        { $_ -in 5..15 } { return "`t`t" }
        { $_ -in 16..24 } { return "`t" }
        default { return "`t" }
    }
}

猜你在找的正则表达式相关文章