JAVA正则表达式,matcher.find()和matcher.matches()的
区别
1.find()⽅法是部分匹配,是查输⼊串中与模式匹配的⼦串,如果该匹配的串有组还可以使⽤group()函数。
matches()是全部匹配,是将整个输⼊串与模式匹配,如果要验证⼀个输⼊的数据是否为数字类型或其他类型,⼀般要⽤matches()。
replaceall()2.Pattern pattern= Patternpile(".*?,(.*)");
Matcher matcher = pattern.matcher(result);
if (matcher.find()) {
up(1);
}
3.详解:
matches
public static boolean matches(String regex, CharSequence input)
编译给定正则表达式并尝试将给定输⼊与其匹配。
调⽤此便捷⽅法的形式
Pattern.matches(regex, input);
Patternpile(regex).matcher(input).matches() ;
如果要多次使⽤⼀种模式,编译⼀次后重⽤此模式⽐每次都调⽤此⽅法效率更⾼。
参数:
regex - 要编译的表达式
input - 要匹配的字符序列
抛出:
PatternSyntaxException - 如果表达式的语法⽆效
find
public boolean find()尝试查与该模式匹配的输⼊序列的下⼀个⼦序列。
此⽅法从匹配器区域的开头开始,如果该⽅法的前⼀次调⽤成功了并且从那时开始匹配器没有被重置,则从以前匹配操作没有匹配的第⼀个字符开始。
如果匹配成功,则可以通过 start、end 和 group ⽅法获取更多信息。
matcher.start() 返回匹配到的⼦字符串在字符串中的索引位置.
返回:
当且仅当输⼊序列的⼦序列匹配此匹配器的模式时才返回 true。
4.部分JAVA正则表达式实例
①字符匹配
Pattern p = Patternpile(expression); // 正则表达式
Matcher m = p.matcher(str); // 操作的字符串
boolean b = m.matches(); //返回是否匹配的结果
System.out.println(b);
Pattern p = Patternpile(expression); // 正则表达式
Matcher m = p.matcher(str); // 操作的字符串
boolean b = m. lookingAt (); //返回是否匹配的结果
System.out.println(b);
Pattern p = Patternpile(expression); // 正则表达式
Matcher m = p.matcher(str); // 操作的字符串
boolean b = m..find (); //返回是否匹配的结果
System.out.println(b);
②分割字符串
Pattern pattern = Patternpile(expression); //正则表达式
String[] strs = pattern.split(str); //操作字符串得到返回的字符串数组
③替换字符串
Pattern p = Patternpile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
String s = m.replaceAll(str); //替换后的字符串
④查替换指定字符串
Pattern p = Patternpile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, str);
i++; //字符串出现次数
}
m.appendTail(sb);//从截取点将后⾯的字符串接上
String s = sb.toString();
⑤查输出字符串
Pattern p = Patternpile(expression); // 正则表达式
Matcher m = p.matcher(text); // 操作的字符串
while (m.find()) {
matcher.start() ;
}
原来,group是针对()来说的,group(0)就是指的整个串,group(1)指的是第⼀个括号⾥的东西,group(2)指的第⼆个括号⾥的东西。
最近学习正则表达式,发现中的⼀些术语与其他地⽅描述的有所差异。⽐如Java正则表达式中的“组”概念与《正则表达式必知必会》⼀书中讲述的“⼦表达式”其实是⼀样的,只是表述不同⽽已。由此也引发了使⽤JavaAPI时对group(int group)、start(int group)、end(int group)不是太理解。
wtest;
import java.io.*;
import *;
import java.*;
public class MailTest{
public static void main(String[] args) throws Exception{
String regEx = "count(\\d+)(df)";
String s = "count000dfdfsdffaaaa1";
Pattern pat = Patternpile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.up(2));
}
}
}
输出结果
如果没有括号会有异常。这就是()的作⽤。
如何没有()可以这样写:
public static void main(String []args){
String regEx = "count\\d+";
String s = "count000dfdfsdff1";
Pattern pat = Patternpile(regEx);
Matcher mat = pat.matcher(s);
if(mat.find()){
System.out.up());
}
}
但输出会按照 "count\\d+"; 正则输出.
结果是:count000
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论