我已经创建了一个用于在歌曲上设置mp3标签的Powershell例程,我希望我的一些参数可以作为常规演示或“简单”字符串。具体来说,如果参数可以说是一个正则表达式,那么函数应该尝试使用它来检索它的值;如果它不能,它应该只使用该值。
我刚刚浏览了参数集,并且认为这不适合我,因为我希望灵活处理参数处理;即我想要几个参数独立地这样做。但也许我错了?无论如何,帮助将不胜感激。
答案 0 :(得分:2)
如果你使用的话,你真的不需要try / catch:
IF ($string -as [regex])
如果强制转换成功,它将返回正则表达式,否则它将返回$ null,因此在IF中用作布尔测试,如果它是有效的正则表达式则为$ true,如果是有效的则为$ false不
话虽这么说,我同意Joey你应该选择一种匹配类型(通配符或正则表达式)并坚持下去。在试图确定正则表达式字符是否符合字面意义时,可能会产生意想不到的后果。
答案 1 :(得分:1)
您可以尝试将字符串转换为正则表达式并查找失败。如果有异常,只需将其用作字符串:
$isParamRegex = $(try { $null = [regex]$Param; $true } catch { $false })
对于参数类型,只需将其设为string
并正确记录即可。
但是,我想你可能想要在那里采取不同的路线:
-like
而不是-match
的模式,这对用户来说更具可预测性(imho)。LiteralParam
参数,类似于LiteralPath
,只是将事物作为普通字符串传递,并按原样处理。