Android 正则表达式,Pattern,Matcher基本使用
Pattern类:
Pattern的创建:
Pattern pattern =Pattern.complie(String regex)
参数说明:regex:是一个正则表达式的字符串,(也是需要过滤或寻找字符串的正则表达式)
pattern():
String regex=pattern.pattern();
方法说明:返回pattern实例对应的正则表达式(创建的时候传入的参数:regex);
split():
String[] stringArray=pattern.split(CharSequence input);
方法说明:将input字符串根据pattern的规则拆分成数组;
input --将被拆分的字符串;
stringArray-拆分后得到的数组;
pattern--拆分规则:在input字符串中遇到与pattern匹配的字符串就会将input进行拆分;
示例:input-"1e1e1e1e2e5d2"
Pattern pattern =Pattern.complie("\d")
结果 stringArray为[e,e,e,e,e,d]
Matcher类:
在创建Matcher的时候,需要先创建Pattern;
Pattern pattern =Pattern.complie(String regex)
Matcher matcher=pattern.matcher( String imput);
pattern():
Pattern pattern=matcher.pattern();
方法说明:返回创建mathcer的pattern实例;
整体匹配:
Boolean boolean=matcher.matcher();
参数说明: boolean-只有整个matcher中的input字符串与pattern的匹配规则完全匹配的时候返回true,否则返回false;
局部匹配:
Boolean boolean=matcher.find();
参数说明: boolean-当matcher中的input字符串具有与pattern的规则匹配的时候返回true,否则返回false;
当boolean为true的时候,我们可以调用
matcher.start();返回匹配到的子字符串在字符串中的索引位置
matcher.end();返回匹配到的子字符串的最后一个字符在字符串中的索引位置
matcher.group();返回匹配到的子字符串
注意:当多次调用find()的时候,会在字符串中寻找下一个能够匹配这则表达式的子字符串;
替换:
String over=matcher.replaceFirst(String instead);
参数说明:instead:将匹配到的第一处的字符串换成instead字符串
over:替换后的字符串;
String over=matcher.replaceAll(String instead);
参数说明:instead:将匹配到所有的字符串换成instead字符串
over:替换后的字符串;
String StringBuffer=matcher.appendReplacement();
将替换位置处及之前位置处的字符复制到StringBuffer中;
String StringBuffer=matcher.appendTail();
将替换位置之后的字符复制到StringBuffer
使用实例:
//匹配字符串,正则长度等于14位
Pattern p = Pattern.compile("^.{14}$");
Matcher m = p.matcher(location_codeText);
if(m.find()) {
isFull.setEnabled(true);
isFull.setTextColor(Color.BLUE);
}else{
isFull.setEnabled(false);
isFull.setTextColor(Color.GRAY);
return;
}
//*处理字符串中的特殊字符*/
String regEx="[`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】';:”“’。、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(strToSpeech.toString());
String toSpeechText=m.replaceAll("").trim();