Java Regex将LDAP路径转换为专有名称

时间:2014-12-13 20:11:13

标签: java regex replace

我有以下格式的组名列表:

  

G = 1组/ cat_red / cat_top / domain1的   G =组2 / cat_light / cat_green / cat_down /域2

我希望像这样提取distinguishedNames:

  

CN = 1组,OU = cat_red,OU = cat_top,DC =域1,DC = intertnal   CN =组2,OU = cat_light,OU = cat_green,OU = cat_down,DC =域2,DC = intertnal

路径长度不同。它可以由正则表达式完成吗?

2 个答案:

答案 0 :(得分:1)

首先用g=替换字符串头部的CN=的出现次数。

然后找到所有斜杠,后跟允许的字符,然后是另一个斜杠,即\(?=\w\),并用,OU=替换第一个斜杠。在第一个斜杠后使用前瞻,这就是?=所做的。

然后找到斜杠,后跟允许的字符和字符串结尾,用,DC=替换斜杠并附加DC=internal(我猜错了拼写错误)。

答案 1 :(得分:1)

虽然你没有很多边缘案例,但这适用于你拥有的人:

String name = ldap.replaceAll("^g", "CN").replaceAll("/([^/]+$)", ",DC=$1,DC=internal").replace("/", ",OU=");    // a missing comma added