我正在尝试识别日志文件中的错误。该应用程序使用五个大写字母后跟三个数字后跟“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") 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!