您的位置:首页 > 编程语言 > Java开发

java 正则表达式

2016-07-26 17:36 357 查看
作用:搜索,编辑和

1.Pattern类:

pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,必须首先调用其静态编译方法,返回一个Pattern对象。该方法接受一个正则表达式最为它的第一个参数。

2.Matcher类

Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。需要调用Pattern对象的matcher方法来获得一个Matcher对象。

3.PatternSyntaxException:

PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

捕获组:把多个字符当成一个独立单元进行处理的方法,它通过对括号内的字符分组来创建。

实例:从一个给定字符串中找到数字串

//按指定模式在字符串中查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
//创建pattern对象
Pattern r = Pattern.compile(pattern);
//创建matcher对象
Matcher m = r.matcher(line);
if (m.find()){
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
结果

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0


Matcher类的方法:

1.start和end方法

实例:

private static String REGEX = "\\bcat\\b";
private static String INPUT = "cat cat cat cattie cat";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
int count = 0;

while (m.find()){
count++;
System.out.println("Match number "+count);
System.out.println("start():)"+m.start());
System.out.println("end():"+m.end());
}


运行结果:

Match number 1
start():)0
end():3
Match number 2
start():)4
end():7
Match number 3
start():)8
end():11
Match number 4
start():)19
end():22


2.matches()和lookingAt()

两个方法都是用于匹配输入序列模式,matches()要求整个序列都匹配。lookingAt()可以是部分匹配。

实例:

private static String REGEX = "cat";
private static String INPUT = "catcat";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
System.out.println("lookingAt(): "+m.lookingAt());
System.out.println("matches():"+m.matches());


运行结果:

lookingAt(): true
matches():false


3.replaceFirst()和replaceAll().

replaceFirst()替换首次匹配。replaceAll()替换所有匹配。

实例:

private static String REGEX = "cat";
private static String INPUT = "cat cat cat cattie cat";
private static String REPLACE = "dog";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
System.out.println("replaceAll(): "+m.replaceAll(REPLACE));
System.out.println("replaceFirst():"+m.replaceFirst(REPLACE));
运行结果:

replaceAll(): dog dog dog dogtie dog
replaceFirst():dog cat cat cattie cat


4.appendReplacement()和appendTail().

用于替换匹配。

实例:

private static String REGEX = "cat";
private static String INPUT = "cat cat cat cattie catffn";
private static String REPLACE = "dog";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
StringBuffer sb = new StringBuffer();
while (m.find()){
m.appendReplacement(sb,REPLACE);
}
System.out.println(sb.toString());
m.appendTail(sb);
System.out.println(sb.toString());


运行结果:

dog dog dog dogtie dog
dog dog dog dogtie dogffn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: