查找系列中其他两个字符串之间的字符串

时间:2013-02-03 08:40:51

标签: regex

对于含糊不清的标题感到抱歉,因为我想不出如何表达这个问题。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

如果文件使用\n分隔行,则这是一个快速解决方法:

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