要评估的示例输入。
中使用正则表达式
“未安装%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll版本为4.8.3761.0 %windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll版本为4.8.3761.0#”"KB4565628未安装“%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll版本为4.8.3761.0 %windir%\Microsoft.NET\Framework\v4.0.30319\System%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll版本是4.8.3761.0,%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll版本是4.8.3761.0#,KB4565588或KB4565635没有安装,%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll版本是4.8.3761。0 %windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll版本为4.8.3761.0#“KB4565588或KB4565635未安装”%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll版本为4.8.3761.0 %windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll版本为4.8.3761.0#“KB4565588或KB4565635未安装%windir%\Microsoft.NET\Framework64”%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll版本为4.8.3761.0 \v4.0.30319\System.Data.dll版本为4.8.3761.0#“KB4565588”或KB4565635未安装
发布于 2022-01-24 16:03:11
使用Select-String
$strings = @(
"KB4565628 is not installed
%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll Version is 4.8.3761.0
%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll Version is 4.8.3761.0#"
"KB4565628 is not installed
%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll Version is 4.8.3761.0
%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll Version is 4.8.3761.0#"
"KB4565628 is not installed
%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll Version is 4.8.3761.0
%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll Version is 4.8.3761.0#"
"KB4565588 or KB4565635 is not installed
%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll Version is 4.8.3761.0
%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll Version is 4.8.3761.0#"
"KB4565588 or KB4565635 is not installed
%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll Version is 4.8.3761.0
%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll Version is 4.8.3761.0#"
"KB4565588 or KB4565635 is not installed
%windir%\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll Version is 4.8.3761.0
%windir%\Microsoft.NET\Framework\v4.0.30319\System.Data.dll Version is 4.8.3761.0#"
)
$KBIDs = $strings |Select-String 'KB\d{5,}' -AllMatches |ForEach-Object Matches |ForEach-Object Value正则表达式模式KB\d{5,}描述由文字字符K和B组成的字符串,后面跟着5位或更多位数。
因此,$KBIDs现在将包含输入字符串中的KBXXXXXX标识符。
若要删除重复项,请使用Sort-Object -Unique
$UniqueKBIDs = $KBIDs |Sort-Object -Unique发布于 2022-01-24 16:22:40
下面是匹配所有KBs的正则表达式,后面跟着数字(在您提供的文本字符串上进行测试:KB\d* )
示例:
import re
res = re.findall( r'KB\d*', '0#" "KB4565588 or KB4565635 is not installed...')
print(res)
>>> ['KB4565588', 'KB4565635']因此,如果您只想得到没有"KB“的数字,那么您可以这样做:
filtered_res = [elem[2:] for elem in res]
print(filtered_res)
>>> ['4565588', '4565635']https://stackoverflow.com/questions/70836697
复制相似问题