到目前为止,我已经提出了以下
$String = "[EXTERNAL] +^ test 1"
或
$String = "+^ RE: test 2"
if ( ($String -match "^[EXTERNAL]s+^") -or ($String -match "^+^") ) { write-host "Match" }
问题-如何正确匹配以下内容?
$String = "FW: [EXTERNAL] +^ test 2"
所以任何包含"+^"
但不包含"^[EXTERNAL]s+^"
或"^+^"
的字符串
任何已拨付的援助。。
如果我理解正确,你想匹配任何字符串:
- 包含
+^
AND - 不以
+^
AND开头 - 不是以
[EXTERNAL] +^
开头
希望这是正确的。。。
因此,我可能会做这样的事情:
$tests = @(
"[EXTERNAL] +^ test 1"
"+^ RE: test 2"
"FW: [EXTERNAL] +^ test 2"
)
foreach ($inp in $tests) {
if ($inp -match '+^' -and $inp -notmatch '^(?:+^|[EXTERNAL]s+^)') {
Write-Host "Test case '$inp' matched"
}
else {
Write-Host "Test case '$inp' did not match"
}
}
使用一个正则表达式是可能的,但当您掌握了整个编程语言时,这通常会更复杂,所以我建议使用两个这样的条件语句(如果您想拆分第二个条件语句,则使用3(。