如何使用正则表达式和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[^,]*)实现大小写不敏感。