Regex 使用正则表达式匹配带转义字符和不带转义字符的字符串
我有不同于Active Directory对象的可分辨名称,在将这些dn拆分为简单名称时需要过滤掉转义字符 我已经有了PowerShell的字符串Regex 使用正则表达式匹配带转义字符和不带转义字符的字符串,regex,powershell,split,Regex,Powershell,Split,我有不同于Active Directory对象的可分辨名称,在将这些dn拆分为简单名称时需要过滤掉转义字符 我已经有了PowerShell的字符串-split,但这并没有过滤掉转义字符。我已经尝试了带有正向查找的正则表达式,但在这种情况下,我确实需要一些类似于可选正向查找的东西?也许我只是想得太复杂了 字符串示例: OU=External,OU=T1,OU=\+TE,DC=test,DC=dir OU=\\\\外部,OU=T1,OU=\+TE,DC=test,DC=dir OU=\+外部,OU=
-split
,但这并没有过滤掉转义字符。我已经尝试了带有正向查找的正则表达式,但在这种情况下,我确实需要一些类似于可选正向查找的东西?也许我只是想得太复杂了
字符串示例:
OU=External,OU=T1,OU=\+TE,DC=test,DC=dir
OU=\\\\外部,OU=T1,OU=\+TE,DC=test,DC=dir
OU=\+外部,OU=T1,OU=\+TE,DC=test,DC=dir
+
和#
是转义的,但它们是这些对象的实际名称,所以我需要删除转义字符
使用以下PowerShell,可以获取对象的名称
($variable -split ',*..=')[1]
实际结果:
外部
\\外部
\+外部
外部
#外部
+外部
$variable-creplace“regex”
一起使用,但我找不到一个适合所有这些情况的regex
我的尝试是:
(?只需稍加修改,您就可以在当前正则表达式中添加斜杠作为可选项。您已经对前导逗号做了类似的操作
"OU=\#External,OU=T1,OU=\+TE,DC=test,DC=dir" -split ',?..=\\?'
如果你只想读第一节,你可以更进一步,但这回答了你的基本问题。可能会有其他的效率,但可能不值得。只要稍作改动,你就可以在当前的正则表达式中添加斜杠作为可选项。你已经对前导逗号做了类似的操作
"OU=\#External,OU=T1,OU=\+TE,DC=test,DC=dir" -split ',?..=\\?'
如果您只看第一节,您可以进一步了解这一点,但这回答了您的基本问题。可能还有其他效率需要提高,但可能不值得。要从DN中提取第一个OU名称,同时删除可选的前导反斜杠,您可以使用如下正则表达式:
演示:
$dn1 = 'OU=External,OU=T1,OU=\+TE,DC=test,DC=dir'
$dn2 = 'OU=\#External,OU=T1,OU=\+TE,DC=test,DC=dir'
$dn3 = 'OU=\+External,OU=T1,OU=\+TE,DC=test,DC=dir'
$dn1 -replace 'OU=\\?(.*?), *..=.*$', '$1' # output: External
$dn2 -replace 'OU=\\?(.*?), *..=.*$', '$1' # output: #External
$dn3 -replace 'OU=\\?(.*?), *..=.*$', '$1' # output: +External
要从DN中提取第一个OU名称,同时删除可选的前导反斜杠,可以使用如下正则表达式:
演示:
$dn1 = 'OU=External,OU=T1,OU=\+TE,DC=test,DC=dir'
$dn2 = 'OU=\#External,OU=T1,OU=\+TE,DC=test,DC=dir'
$dn3 = 'OU=\+External,OU=T1,OU=\+TE,DC=test,DC=dir'
$dn1 -replace 'OU=\\?(.*?), *..=.*$', '$1' # output: External
$dn2 -replace 'OU=\\?(.*?), *..=.*$', '$1' # output: #External
$dn3 -replace 'OU=\\?(.*?), *..=.*$', '$1' # output: +External
您可以使用-Replace
操作符删除\.$OU-Replace“\\”
。您可以在拆分-split',?..=\?'
中添加斜杠作为可选项,这与处理命令的方式类似。您可以使用-Replace
操作符删除\.$OU Replace“\\”
。你可以在split-split',?..=\\?'中添加斜杠作为可选项。
类似于你处理commaThanks Matt!这就是我要找的。谢谢Matt!这就是我要找的。谢谢你的快速回答!我对regex相当陌生,希望有这么多人愿意帮助!谢谢你的快速回答!我是f对regex来说是个新鲜人,有那么多人愿意帮忙,这让我很高兴!