[英]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.