2

抱歉标题模棱两可,因为我想不出如何表达这个问题。

我有一个包含数百行的 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)。

有没有办法在“DC=fabrikam,DC=com”的左边找到第一次出现的“CN= ”作为边界?

(我使用 Notepad++ 或 Programmer's Notepad)

4

1 回答 1

1

如果您可以假设;从未出现在值中并且仅用于分隔不同的记录,那么您可以使用以下方法:

CN=[^;]*,DC=fabrikam,DC=com

请注意,上面的正则表达式可能会从多行中获取匹配项。

\n如果文件用于分隔行,这是一个快速修复:

CN=[^;\n]*,DC=fabrikam,DC=com
于 2013-02-03T08:43:43.440 回答