对于含糊不清的标题感到抱歉,因为我想不出如何表达这个问题。
我有一个包含数百行的CSV文件,其中包含数千个LDAP区别名称。其中一个示例行可能如下所示:
CN=John Doe,OU=Miami,DC=contoso,DC=com; CN=Spamela Anderson,OU=Los Angeles,DC=contoso,DC=com; CN=Cosmo Kramer,OU=Subfolder,OU=Subfolder,OU=ParentFolder,DC=FABRIKAM,DC=com; CN=Bob Barker,DC=contoso,DC=com
CN=Luke Skywalker,OU=Tattoine,DC=contoso,DC=com; CN=Brad Pitt,OU=Hollywood,DC=contoso,DC=com; CN=Mickey Mouse,OU=Users,DC=contoso,DC=com
CN=Ted Nugent,OU=Houston,DC=FABRIKAM,DC=com; CN=Carl Sagan,DC=Uranus,DC=contoso,DC=com
我想删除FABRIKAM.COM
域(dc=fabrikam,dc=com)
中的任何专有名称。在样本中,我想剥离:
;CN=Cosmo Kramer,OU=Subfolder,OU=Subfolder,OU=ParentFolder,DC=FABRIKAM,DC=com
我试过用:
CN=(.*)?,DC=fabrikam,DC=com
但是这会从行的开始中找到第一次出现“CN =”,直到出现“DC = fabrikam,dc = com”(其中还包括John Doe和Spamela Anderson) ,在我的样本中。)
有没有办法在 左 中找到“CN =”的 首次出现 DC = fabrikam,DC = com“作为边界?
(我使用Notepad ++或Programmer's Notepad)
答案 0 :(得分:1)
如果您可以假设;
从未出现在值中,并且仅用于分隔不同的记录,那么您可以使用:
CN=[^;]*,DC=fabrikam,DC=com
请注意,上面的正则表达式可以从多行获取匹配。
如果文件使用\n
分隔行,则这是一个快速解决方法:
CN=[^;\n]*,DC=fabrikam,DC=com