我正在尝试识别日志文件中的错误。该应用程序使用五个大写字母后跟三个数字后跟“E”作为错误代码。错误代码后跟一个非单词字符。我正在识别案例:
$errors=Select-string -Path "logfile.txt" -Pattern "[A-Z]{5}[0-9]{3}E\W"
但是现在剩下的内容包括了
ab1bea8a-a00e-4211-b1db-2facecfd725e.
正则表达式匹配并标记为错误。我将正则表达式更改为
\p{Lu}{5}[0-9]{3}E\W
(我 expected to match five upper case 个字符),但为什么它仍然匹配非错误小写模式?
请您参考如下方法:
“不区分大小写”正则表达式标志由 Select-String
设置,这使得 \p{Lu}
不区分大小写,就像它对 [A-Z]
.
尝试在命令中添加 -CaseSensitive
参数。
您可以通过运行一些 .NET 代码来确认这一点,例如在 LINQPad 中:
(new Regex(@"\p{Lu}", RegexOptions.IgnoreCase)).IsMatch("a")