gpt4 book ai didi

regex - 如何制作正则表达式以排除带括号的字符串

转载 作者:行者123 更新时间:2023-12-03 01:18:24 26 4
gpt4 key购买 nike

我有以下SDDL:

O:BAG:BAD:(A;;CCDCLCSWRP;;;BA)(A;;CCDCSW;;;WD)(A;;CCDCLCSWRP;;;S-1-5-32-562)(A;;CCDCLCSWRP;;;LU)(A;;CCLCRP;;;S-1-5-21-4217728705-3687557540-3107027809-1003)

不幸的是,我一直这样:
(A;;CCDCLCSWRP;;;BA)(A;;CCDCSW;;;WD)

我想要的只是 (A;;CCDCSW;;;WD)

我的正则表达式是: (\(A;.+;WD\)):找到“ (A;”以“ ;WD)”结尾的一些字符

我试着使匹配变得懒惰,并尝试根据对stackoverflow regex标记的搜索来排除“ )(”对字符,以寻找其他人回答类似问题的示例。

我真的很困惑,为什么不能排除括号:
(\(A;.+[^\(\)]*.+;WD\)):找到“ (A;”,后跟一些字符,其中都不是“ )(”,后跟其他以“ ;WD)”结尾的字符

这是我对否定环顾四周的猜测:
(\(A;.+^((?!\)\().).+;WD\)) 

没有任何匹配。

我也在PowerShell v3.0中使用以下代码执行此操作:
$RegExPattern = [regex]"(\($ACE_Type;.*;$ACE_SID\))+?"
if ($SDDL -match $RegExPattern) {
$MatchingACE = $Matches[0]

在这种情况下 $ACE_Type = "A"$ACE_SID = "WD"

最佳答案

您的第二个正则表达式模式几乎可以解决此问题。问题是您包含了太多的.通配符。这应该是您所需要的:
A;[^()]+;WD
当然,如果您只想捕获A;;WD之间的字符串:
A;([^()]+);WD
然后只需替换为\1即可。

关于regex - 如何制作正则表达式以排除带括号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920657/

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