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

/*
 * 正则表达式对字符串的常见操作:
 * 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
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值