我想从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/