java 正则 多个空格_java正则表达式 多个空格替换多个成-
今天遇到一個正則表達式問題,如題,需求是將“aaa???bbb”替換成“aaa---bbb”,關鍵來了,要求正則表達式前面是aaa,后面是bbb。
如s.replaceAll("aaa\\s+bbb",?"aaa-bbb");這樣就只能換成一個-
不要告訴我s.replaceAll("?",?"-"),這個我也會。
網友的方法:
String str = "qqqqqaaaadrrr ssssaaa bbbssdfsdfsdfs";
Pattern p = Pattern.compile("(aaa\\s+bbb)");
Matcher m = p.matcher(str);
while(m.find())
{
str = str.replaceFirst(m.group(1), m.group(1).replaceAll("\\s", "-"));
}
System.out.println(str);
真心不錯,簡潔有效。
思路為:先找到匹配到的字符串(記為s1),再對字符串s1修改成匹配后的字符串s2,最終再對整個字符串s將s1替換為s2。
另一個解法:
String x = "(.*aaa)(\\s+)(bbb.*)";
Pattern pattern = Pattern.compile(x);
String loop="";
String s = "qqqqqaaaadrrr ssssaaa bbbssdfsdfsdfs";
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
for (int i = 0; i < matcher.group(2).length(); i++) {
loop=loop+"-";
}
System.out.println(matcher.group(1)+loop+matcher.group(3));
}
思路:利用group拼湊,最終得出替換后結果
原文:http://blog.csdn.net/love_5209/article/details/19418543
總結
以上是生活随笔為你收集整理的java 正则 多个空格_java正则表达式 多个空格替换多个成-的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: java 技术点_Java的21个技术点
 - 下一篇: java课后习题_【整理】java私塾教