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

java正则表达式

2017-05-01 13:06 288 查看
java.util.regex包包含三个类:

Pattern类:

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

Matcher类:

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

PatternSyntaxException:

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

实例:

import java.util.regex.*;
public class test_1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
String content = "I am noob" + "from runoob.com.";
String pattern = ".*runoob.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了'runoob'子字符串?"+isMatch);
}
}


注意: 尝试将整个区域与模式匹配,当且仅当整个区域序列匹配此匹配器的模式时才返回true)

捕获组:

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

捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的分组:

(A(A)(B(C)))

(A)

(C)

可以通过调用Matcher对象的groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个表示matcher对象当前有多少个捕获组。

还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在groupCount 的返回值中。

实例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test_1 {

public static void main(String[] args) {
//按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\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));
System.out.println("Found value:"+m.group(3));
}
else
{
System.out.println("NO MATCH");
}
}
}


运行结果:



注意: “*”号代表字符可以不出现,也可以出现一次或多次;”?”号代表前面的字符最多只可以出现一次;”.*” 能匹配除了换行符的任意字符;compile 方法将给定的正则表达式编译到模式中;Matcher 方法创建匹配给定输入与此模式的匹配器,返回此模式的新匹配器;group 方法返回以前匹配操作期间由给定组捕获的输入子序列,捕获组是从1开始从左到右的索引。组零表示整个模式,因此m.group(0)等效于m.group())

(1)this is text ——this is text

(2)this\s+is\s+text——this is text

“\s+”匹配多个空白符(\S则是任意不是空白符的字符)

(3)^\d+(.\d+)?——“5”,“1.5”或“2.21”

“^”定义以什么开始;”\d+”匹配多个数字(\D匹配一个非数字字符);”?”设置括号内选项可选;”.”匹配“.”(ps:”.”也是正则表达式,匹配任何一个字符:如“a”或“1”)

Match 类个别方法实例:

startend 方法

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test_1 {

private static final String REGEX="\\bcat\\b";
private static final String INPUT="cat cat cat cattie cat";
public static void main(String[] args) {
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());
}
}

}


运行结果:



2. matcheslookingAt 方法

这里写代码片


replaceFirstreplaceAll 方法

这里写代码片


appendReplacementappendTail 方法

这里写代码片
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 正则表达式