如何使用正则表达式和java从ldap提取用户名
我有一段文字如下:如何使用正则表达式和java从ldap提取用户名,java,regex,Java,Regex,我有一段文字如下: CN=BillNameOne,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com CN=MaryNameTwo,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com CN=BillName,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com CN=MaryName,OU=departmentOne,OU=departmentTwo
CN=BillNameOne,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com
CN=MaryNameTwo,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com
CN=BillName,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com
CN=MaryName,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com
如何使用regex从java中的字符串中提取用户名。我想要以比尔开头的用户名
正则表达式应该是什么?
我可以用这个来提取用户名,但是如何选择以Bill开头的用户名呢
"CN=(.*?),"
CN=(比尔[^,]*)
应该适合你的需要。怎么样
^CN=(Bill[^,]++)
比如说
final String[] strings = {
"CN=BillNameOne,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com",
"CN=MaryNameTwo,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com",
"CN=BillName,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com",
"CN=MaryName,OU=departmentOne,OU=departmentTwo,DC=domain,DC=com",};
final Pattern pattern = Pattern.compile("^CN=(Bill[^,]++)");
for (final String string : strings) {
final Matcher matcher = pattern.matcher(string);
if(matcher.find()) {
System.out.println(matcher.group(1));
}
}
输出:
BillNameOne
BillName
不要依赖于知道CN=在那里。使用javax.naming.ldap.LdapName,提取最右边的RDN,并获取其值。那么您只需要String.startsWith()。完全不需要。只需使用
中的“CN=(Bill.*?”,
@greedyfoddha:您可以通过中的CN=((i)Bill[^,]*)实现大小写不敏感。