package day04;public class StringDemo2 {
public static void main(String[] args) {
String w1 = "a";
String w2 = w1.replaceAll("\\d?","t");
String w3 = "7";
String w4 = w3.replaceAll("\\d?","t");
System.out.println(w2);
System.out.println(w4);
}
}输出结果是
tat
tt求大神解释的详细点!
public static void main(String[] args) {
String w1 = "a";
String w2 = w1.replaceAll("\\d?","t");
String w3 = "7";
String w4 = w3.replaceAll("\\d?","t");
System.out.println(w2);
System.out.println(w4);
}
}输出结果是
tat
tt求大神解释的详细点!
解决方案 »
- 求运行JAVA语言的最佳方法??
- 我的VISUAL STUDIO 2008只有VISUAL BASIC,C#,C++,数据库,没有J#啊?
- 引用类及其对象真正引用的会时子类或其对象
- 求正则表达式
- 设置控件失去焦点问题?
- 点击jButton按钮,对这个按钮的文字更改,出现错误。贴出代码,求debug。
- java 5的annotation怎么翻译比较确切?
- hashtable的排序
- 有关applet的问题
- 请问各位高手,基于swing框架的,有什么好的开源的组件?
- thinking in java中关于异常的一点疑问
- 不用maven构建的javase项目,导出成jar包后报错,用了spring构建项目
String w1 = "aaa";
String w2 = w1.replaceAll("\\d?","t");
tatatat?其实就是{0,},“空”也会被匹配上,比如两个a之间的“空”。
你这个解释的我还是不明白。能把tat 和 tt的每一个意义说下么?而且你说的两种匹配模式,这正则都一样咋就变两种匹配模式呢。
String w4 = w3.replaceAll("7{0}","t");
t7t1t String w3 = "71";
String w4 = w3.replaceAll("7{0,1}","t");
tt1t 少个t是因为7{0,1}会匹配1{0}7
/**
* 默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
* 如:String str="abcaxc";
*Patter p="ab.*c";
*贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。
*非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。
*/
System.out.println("a".replaceAll("\\?","t"));//a 非贪婪匹配,最小长度
System.out.println("a".replaceAll("","t"));//tat 贪婪匹配,最大长度
System.out.println("7".replaceAll("\\d?","t"));//tt 将连着的数字和空格一起转化,非贪婪匹配,最小长度
System.out.println("7".replaceAll("\\?","t"));//7 非贪婪匹配,最小长度
System.out.println("7".replaceAll("","t"));//t7t 贪婪匹配,最大长度
System.out.println("7a".replaceAll("\\d","t"));//ta 将数字转化,贪婪匹配,最大长度
}