您的位置:首页 > 其它

28-正则表达式-06-正则表达式(常见的功能-获取)

2015-08-11 17:51 274 查看
/*
* 正则表达式对字符串的常见操作:
* 4.获取
*
* 打开API,点进正则表达式,发现它也是一个类,即
* 		public final class Pattern extends Object implements Serializable
* 正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对
* 象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一
* 模式。
*
* 所以步骤如下:
* 1.将正则表达式封装成对象;
* 2.用上一步的对象创建一个匹配器(Matcher)对象;
* 3.用匹配器去获取。
*
* 示例程序:
*  String regex = "a*b";//正则表达式意思是a出现0次或多次,后面接b
*  Pattern p = Pattern.compile(regex);//步骤1
*  Matcher m = p.matcher("aaaaab");//步骤2,通过正则对象的matcher方法和字符串想关联,获取要对字符串操作的匹配器对象Matcher.
*  boolean b = m.matches();//步骤3,通过Matcher匹配器对象的方法对字符串进行操作。
*/

package demo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Demo {

public static void main(String[] args) {

FunctionDemo();

}

public static void FunctionDemo() {

String str = "da jia hao, ming tian xiu xi.";

String regex = "\\b[a-z]{3}\\b";//出现小写字母3次,\\b表示单词边界,即空格,如ming,若没有\\b,则会
//误将min当成一个三字母单词,所以\\b发现g不是单词边界,那么ming不匹配regex

//1.将正则封装成对象
/**
* 【注意】查找API,发现Pattern类没有构造函数,即不能new对象,所以Pattern只能通过该类特有方法compile()获取
*/
Pattern p = Pattern.compile(regex);

//2.通过正则对象获取匹配器对象
Matcher m = p.matcher(str);//将p和字符串相关联

/*
* 在java.util.regex包内有关于Matcher类的描述,其内有三个方法:
* (1)matches 方法尝试将整个输入序列与该模式匹配。
* (2)lookingAt 尝试将输入序列从头开始与该模式匹配。
* (3)find 方法扫描输入序列以查找与该模式匹配的下一个子序列。
*/

/*
* 使用Matcher对象的方法对字符串进行操作,既然要获取三个字母组成的单词,那就用查找,即find()方法
*/

while(m.find()){
/**
* 【切记】在用Matcher类特有方法group()获取子序列之前一定先用find()查找一遍,即先检查一遍str中是否有满足regex的
*/

System.out.println(m.group());//获取匹配的子序列

System.out.println(m.start() + ":" + m.end());//获取上一行代码得到的子序列中的起始位置,类似拿到索引参量

}
}

}
/*
* 【运行结果】
* jia
* 3:6
* hao
* 7:10
* xiu
* 22:25
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: