0

我有一个看起来像这样的文本:

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

如何使用正则表达式从 java 中的字符串中提取用户名。我想要以比尔开头的用户名。

正则表达式应该是什么?我可以用这个提取用户名,但是如何选择以 Bill 开头的用户名?

"CN=(.*?),"
4

3 回答 3

0

不要依赖知道 CN= 在那里。使用javax.naming.ldap.LdapName,提取最右边的RDN,得到它的值。那么你所需要的就是 String.startsWith()。根本不需要 RE。

于 2013-05-26T23:58:13.420 回答
0

怎么样

^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
于 2013-05-26T16:58:18.247 回答
0

CN=(Bill[^,]*)应该适合您的需求。

于 2013-05-26T16:55:08.983 回答