正则表达式 – 开关/案例陈述
发布时间:2020-12-14 02:29:01 所属栏目:百科 来源:网络整理
导读:我有一个名为tabLength的函数,它应该返回一个字符串.这是为了在文本文档中进行格式化. 任何人都可以检查我的switch语句,看看为什么我在第6行收到错误.这就是switch语句正在经历的“情况”. Function tabLength ( $line ) { $lineLength = $line.Length switc
我有一个名为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:Usersnamedesktopnslookup.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" } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |