日期:2014-05-20  浏览次数:20835 次

求一个正则表达式~喜欢正则的朋友进
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

------解决方案--------------------
引用:
Quote: 引用:

看第一个字符串和结果,感觉是想逆序输出。

但是第二个字符串
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);
        }