String s= "cn=测试用户1,ou=测试机构1,ou=湖北省,ou=org,o=essp,c=cn";
我想把上面的字符串用正则替换为:
湖北省->测试机构1->测试用户1需求是:ou=org,o=essp,c=cn可以直接去掉(当然ou=org,o=essp,c=cn之间可能是有空格的)
但ou=xxx的数量是可变的,如字符串也可能是这样:cn=测试用户1,ou=测试机构1,ou=测试一部,ou=湖北省
需要变为:湖北省->测试机构1->测试一部->测试用户1。
希望平时正则用的多的同学帮一把,谢谢。用java语法实现~正则表达式String
我想把上面的字符串用正则替换为:
湖北省->测试机构1->测试用户1需求是:ou=org,o=essp,c=cn可以直接去掉(当然ou=org,o=essp,c=cn之间可能是有空格的)
但ou=xxx的数量是可变的,如字符串也可能是这样:cn=测试用户1,ou=测试机构1,ou=测试一部,ou=湖北省
需要变为:湖北省->测试机构1->测试一部->测试用户1。
希望平时正则用的多的同学帮一把,谢谢。用java语法实现~正则表达式String
ou=测试机构1,ou=测试一部有啥区别么?为啥结果不是:湖北省->测试一部->测试机构1->测试用户1请给出明确的规则
需求是是去掉结尾的一串英文,然后把剩下的倒序
这个规律性还是挺清晰的,如果不存在其它干扰字符,可以用字符串拼接实现: public static void main(String[] args)
{
//目标字符串
String s = "cn=测试用户1,ou=测试一部,ou=测试机构1,ou=湖北省"; //无用字符存储器//如果是要求所有不能包含字母,就用正则式实现
List<String> noUseStrs = new ArrayList<String>();
noUseStrs.add("org");
noUseStrs.add("essp");
noUseStrs.add("cn"); //将所有的空格去掉
s = s.replaceAll("\\s", "");
System.out.println("去空格后:" + s);
String[] firstStepStrs = s.split(","); //存放列表
List<String> allStrs = new ArrayList<String>();
String temp;
//循环分离的内容
for (String contex : firstStepStrs)
{
if (contex.indexOf("=") < 0)
{
continue;
} temp = contex.split("=")[1]; if (noUseStrs.contains(temp))
{
continue;
}
allStrs.add(temp);
} //逆序拼接结果
StringBuilder sb = new StringBuilder();
for (int index = allStrs.size() - 1; index > 0; index--)
{
sb.append(allStrs.get(index));
sb.append("->");
}
sb.append(allStrs.get(0)); System.out.println("最終結果:" + sb); }
如果存在干扰字符,建议给个更典型的样例吧~
public static void main(String args[])
{
String s= "cn=测试用户1,ou=测试机构1,ou=测试一部,ou=湖北省";
Pattern pat = Pattern.compile("(?:([\\w]+)=([^=,]+))+\\,?", Pattern.DOTALL);
Matcher mat = pat.matcher(s);
while (mat.find()) {
String tag = mat.group(1);
String value = mat.group(2);
}
}
String s= "cn=测试用户1,ou=测试机构1,ou=测试一部,ou=湖北省,cn=com";
Pattern pat = Pattern.compile("=([^=,]+)");
Matcher mat = pat.matcher(s);
while (mat.find()) {
String tag = mat.group(1);
System.out.println("value:"+tag);
}
public static void main(String[] args) {
//目标字符串
//String s= "cn=测试用户1,ou=测试机构1,ou=测试一部,ou=湖北省,cn=com";
String s= "cn=测试用户1,ou=测试机构1,ou=湖北省,ou=org,o=essp,c=cn";
Pattern pat = Pattern.compile("=([^=,\\w]+)");
Matcher mat = pat.matcher(s);
List<String> alist = new ArrayList<String>();
while (mat.find()) {
String tag = mat.group(1);
System.out.println("value:"+tag);
alist.add(tag);
}
StringBuilder sb = new StringBuilder();
for(int len = alist.size() , i = len-1 ; i >= 1 ; i--){
sb.append(alist.get(i));
sb.append("→");
}
sb.append(alist.get(0));
System.out.println(sb.toString());
}
}如果没异议我就结贴给分了