gpt4 book ai didi

python - 正则表达式以任何顺序匹配多个单词

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:43 24 4
gpt4 key购买 nike

我正在编写一个 python 脚本,它将标记 Windows CIS 基准测试的输出。为此,我将组策略设置中的值与正则表达式进行匹配,以查看它们是否符合基准测试的标准。

对于基准测试的某些方面,需要在设置中显示用户列表,但它必须是唯一的,并且指定的顺序不必保持一致。

例如,'Adjust memory quotas for a process' 应该是Administrators,LOCAL SERVICE,NETWORK SERVICE,但是它也可以显示为LOCAL SERVICE,NETWORK SERVICE, Administrators,但不能是 Administrators,LOCAL SERVICE,NETWORK SERVICE,phil

我正在寻找一个可以以类似于 this 的任何顺序匹配这些必需值的正则表达式, 但仅在不存在其他值时才匹配。

谢谢,菲尔

编辑: 这与 Regex to match string containing two names in any order 不同和 Multiple words in any order using regex因为这些不完全匹配单词。我希望只匹配需要的名称,但顺序不限。

第二次编辑:脚本从 csv 文件加载一组规则,其中包含基准项目编号、描述、所需值和正则表达式以匹配组策略设置。这背后的想法是,我们将能够为任何基准创建一个包含规则的 csv,并且脚本不需要预先知道设置是否应该是数字、用户名列表、 bool 值等。

规则从 csv 加载到列表(下例中的基准),策略设置从 tsv 加载到第二个列表(策略)。这使我能够根据使用的基准尽可能保持对值的不可知性检查。

for row in benchmark:
if re.match(row[4],policy[row[2]]):
continue
print('"{}","{}","{}","{}"'.format(row[0],row[1],policy[row[2]],row[3]))

基准 csv 中一行的示例:

"2.2.5","Ensure 'Adjust memory quotas for a process' is set to 'Administrators,LOCAL SERVICE,NETWORK SERVICE'","Adjust memory quotas for a process","Administrators, LOCAL SERVICE, NETWORK SERVICE","<insert regex here>"

如果基准要求不符合item number, item description, current value, required value 格式,则最终输出将写入 csv 文件(或在此处以 csv 格式打印)

最佳答案

怎么样

^[(Administrators)(LOCAL SERVICE)(NETWORK SERVICE),\s]+$

^(Administrators|LOCAL SERVICE|NETWORK SERVICE|[,\s])+$

查看在 https://regex101.com/r/oJF0aW/2/tests 工作

两个版本基本上都说整个字符串必须只包含指定的用户名以及逗号和空格。

关于python - 正则表达式以任何顺序匹配多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43346897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com