求一个正则表达式~喜欢正则的朋友进
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
[解决办法]
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);
}