正确示例:
StringBuffer code = new StringBuffer();
String type="01包装类型";
String regEx="[0-9]";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(type);
while(matcher.find()){
String group = matcher.group();
code.append(group);
}
**:
- boolean matcher.find() : 是否根据正则表达式在字符串中能匹配到
- String mathcer.group() :每次都只能获取到一位满足条件的,因此当存在多个满足条件的内容时,采用while将其满足条件的全部找出。
错误示例:
StringBuffer code = new StringBuffer();
String type="01包装类型";
String regEx="[0-9]";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(type);
boolean m = matcher.find();
while(m){
String group = matcher.group();
code.append(group);
}
如果将 boolean m = matcher.find();写在while外面,则m一直为true,while则陷入无限死循环,且结果永远是找到的第一个无限追加。
本文详细讲解了如何在Java中使用StringBuffer和正则表达式Pattern.compile()找到字符串中所有数字,通过Matcher实例进行逐位匹配并收集。错误示例指出将find()判断移出while会导致无限循环问题。
6937





