【问题标题】:powershell string comparison operators ignoring wildcards忽略通配符的powershell字符串比较运算符
【发布时间】:2014-04-02 14:16:20
【问题描述】:
我正在尝试像这样比较字符串:
'Backup Exec Alert: Job Success (Server: "AMSMGMT") (Job: "Ams-Daily-Back")' -match '(Server: "AMSMGMT") (Job: "Ams-Daily-Back")'
返回 false 因为我需要转义通配符,例如
'/(Server: "AMSMGMT"/) /(Job: "Ams-Daily-Back"/)'
问题:
是否有任何 powershell 函数来查找忽略通配符/正则表达式的子字符串?
非常感谢
【问题讨论】:
标签:
regex
powershell
substring
wildcard
【解决方案1】:
由于您正在进行文字字符串匹配, -like 可能是比 -match 更好的选择
'Backup Exec Alert: Job Success (Server: "AMSMGMT") (Job: "Ams-Daily-Back")' -like '*(Server: "AMSMGMT") (Job: "Ams-Daily-Back")'
True
【解决方案2】:
与之前的答案一样,like 更合适,但您也可以使用“Escape”
'Backup Exec Alert: Job Success (Server: "AMSMGMT") (Job: "Ams-Daily-Back")' -match [System.Text.RegularExpressions.Regex]::Escape('(Server: "AMSMGMT") (Job: "Ams-Daily-Back")')
或者C#包含方法
'Backup Exec Alert: Job Success (Server: "AMSMGMT") (Job: "Ams-Daily-Back")'.Contains('(Server: "AMSMGMT") (Job: "Ams-Daily-Back")')