I have created a Powershell routine for setting mp3 tags on songs, where I’d like some of my parameters to act as either a regular expession or a “simple” string. To be specific, if the parameter can be said to work as a regular expression, the function should try to use this for retrieving its value; if it can’t, it should simply use that value.
I’ve just browsed Parameter sets, and don’t think this would suit me since I want to be flexible with the parameter handling; i.e. I’d like several parameters to act this way independently. But maybe I’m wrong in this? Anyway, help would be appreciated.
You don’t really need the try/catch if you use:
If the cast is successful it will return the regex, if not it will return $null, so used as a boolean test in the IF, it will be $true if it is a valid regex, and $false if it is not.
That being said, the I’d agree with Joey that you should settle on a single match type (either wildcard or regex) and stick with that. There’s too much potential for unintended consequences in trying to determine if a regex metacharacter was intended to be match literally or not.