我有以下格式的组名列表:
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
路径长度不同。它可以由正则表达式完成吗?
答案 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