繁体   English   中英

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

[英]Regex to match multiple words in any order

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

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

例如,“调整进程的内存配额”应该是Administrators,LOCAL SERVICE,NETWORK SERVICE ,但它也可以显示为LOCAL SERVICE,NETWORK SERVICE, Administrators ,但它不能是Administrators,LOCAL SERVICE,NETWORK SERVICE,phil

我在寻找一个正则表达式可以在类似于任何为了适应这些要求的值这个 ,但只匹配,如果没有其他的价值存在。

谢谢,菲尔

编辑:这与正则表达式不同,以匹配包含任意顺序的两个名称的字符串使用正则表达式的 任何顺序的 多个单词,因为它们与单词不匹配。 我想要以任何顺序匹配需求名称。

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

规则从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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM