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 */
相关文章推荐
- C++对象模型——函数的效能(第四章)
- Hdu oj 1513 Palindrome
- qt 插件开发
- HDU 5375 Gray code(格雷码 找到入手点是关键所在)
- 计算机基础及发展历史
- 遍历目录下的文件
- iOS网络协议----HTTP/TCP/IP浅析!!!简单易懂
- 关于Trie树的模板
- Linux select和poll系统调用
- 28-正则表达式-04-正则表达式(常见的功能-切割)
- 28-正则表达式-05-正则表达式(常见的功能-替换)
- eclipse从数据库逆向生成Hibernate实体类
- Java经典23创意模式设计模式(两)
- Manacher算法(转)
- linux中静态库和动态库的区别
- 28-正则表达式-03-正则表达式(常见的功能-匹配)
- C++之 继承后的访问控制
- java模拟js的escape和unescape函数
- python 学习点滴
- 哗啦啦村的日常游戏(一)抓个球