regex - 使用RegEx匹配带有和不带有转义符的字符串

标签 regex powershell split

我有与Active Directory对象不同的专有名称,将这些dn拆分为简单名称时需要过滤掉转义字符。

我已经有一个PowerShell的字符串-split,但是这不能过滤掉转义字符。我已经尝试过使用正向后置式的正则表达式,但是在这种情况下,我确实需要像可选的正向后置式吗?也许我只是想太复杂了。

字符串示例:

  • OU=External,OU=T1,OU=\+TE,DC=test,DC=dir
  • OU=\#External,OU=T1,OU=\+TE,DC=test,DC=dir
  • OU=\+External,OU=T1,OU=\+TE,DC=test,DC=dir

  • 因为+#已转义,但它们是这些对象的实际名称,所以我需要删除转义字符

    使用以下PowerShell,可以获取对象的名称
    ($variable -split ',*..=')[1]
    

    实际结果:
  • External
  • \#External
  • \+External

  • 预期结果:
  • External
  • #External
  • +External

  • 可以将regex与$variable -creplace "REGEX"一起使用,但我找不到适合所有情况的正则表达式。

    我的尝试是:(?<=OU=\\).+?(?=,OU=),但如果\存在,则匹配

    我需要此名称来在Active Directory中创建对象。

    最佳答案

    只需最少的更改,您就可以在当前正则表达式中将斜杠添加为可选。您已经用逗号分隔了

    "OU=\#External,OU=T1,OU=\+TE,DC=test,DC=dir" -split ',?..=\\?'
    

    如果您只打算进入第一部分,则可以走得更远,但这可以回答您的基本问题。可能还有其他效率,但可能不值得。

    关于regex - 使用RegEx匹配带有和不带有转义符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55813384/

    相关文章:

    javascript - javascript中的正则表达式来检查时间和日期

    用于匹配字符串部分不相同的正则表达式

    JavaScript 正则表达式仅在特定上下文中按空格分割

    powershell - 将托管操作系统磁盘快照还原到现有 VM

    javascript - 如何在第 n 次出现字符后分割字符串?

    javascript - 将数组转换为 N 大小但具有最大子数组大小的数组的数组

    c++ - 表达式 : string iterator not dereferencable while using boost regex

    powershell - 在 Powershell 中按文件名的最后一个字符对文件进行排序

    xml - 为什么这个 Powershell 函数有时返回一个列表而其他时候返回一个 XmlElement?

    javascript - 正则表达式匹配右括号后的逗号