我想从LDAP专有名称中解析出所有属性。该属性以comman开头或行开头,以逗号或行结尾结尾。

我写了以下内容:

    String patternStr = "[^,][A-Z]+=([A-Za-z0-9]+)[,$]";
    String str = "CN=USERID003,OU=Users,DC=intern,DC=mycompany,DC=pl";
    Pattern pattern = Pattern.compile(patternStr);
    Matcher m = pattern.matcher(str);
    while (m.find()) {
        String substr = str.substring(m.start(), m.end());
        System.out.println(substr);
        System.out.println(m.group(1));
    }


输出为:

CN=USERID003,
USERID003
OU=Users,
Users
DC=intern,
intern
DC=mycompany,
mycompany


[^,]开头的匹配正确,但[,$]块仅匹配逗号,而不是行尾。

如何匹配子字符串结尾的逗号和行尾?

最佳答案

这应该根据您的描述做您想要的

String patternStr = "(?:^|,)[A-Z]+=([A-Za-z0-9]+)(?:,|$)";


匹配从行/字符串或逗号的开头开始,并以逗号或行/字符串的结尾结束。

关于java - 如何匹配以逗号或行尾结尾的子字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25157553/

10-14 11:41