首先我要指出,这是一个美学问题。我已经解决了自己的问题,我只是好奇的做更好的方法。
所以,我有一个证书DN,像这样:
CN = Jimmy Blooptoop,OU = Someplace,OU = Employees,DC = Bloopsoft-Inc
现在,我想抓住这个CN。在java中,没有使用X509证书的完整DN,而不使用像弹性城堡这样的第三方库,我不能使用,而不是本地支持。所以我必须解析出来,这不是什么问题。唯一使它稍微棘手的事情是,CN并不总是被格式化为 。通常情况下,它实际上将是 。所以,在上面的例子中,CN可以是Jimmy Blooptoop或Blooptoop,Jimmy J(当然是Joop的缩写)。
在阅读了关于正则表达式之后,我写了以下内容,其效果很好:
Matcher m = Pattern.compile("CN=[A-Za-z]*[, ]*[ A-Za-z]*").matcher(dn);
if (m.find())
cn = m.group();
我只是好奇,如果有表达式看起来不像垃圾。我相信自己在阅读了正则表达式之后就已经做到了这一点。