黑马程序员——正则表达式的入门和小案例
2015-11-21 23:54
519 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
正则表达式
大家都知道,我们在java程序的学习和开发中,会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。一、.定义:
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。二、用途:
常见数据处理操作:匹配 ----- 验证邮箱 手机号 QQ号;
替换 ----- 将私人信息隐藏;
分割 ----- name=XXX&sex=XXX&age=XXX;
查找 ----- 网页中的超链接,邮箱;
操作实现:
1、编写代码,使用代码实现:
A、代码编写量大 B、代码通用性差
2、正则表达式:
优点:通用性强;
缺陷:效率低;
三、方法概略
匹配Pattern ----- public static boolean matches(String regex,CharSequence input);//编译给定正则表达式并尝试将给定输入与其匹配。
Matcher ----- public boolean matches();//尝试将整个区域与模式匹配。
替换
Matcher ----- public String replaceAll(String replacement);//替换模式与给定替换字符串相匹配的输入序列的每个子序列
分割
Pattern ----- public String[] split(CharSequence input);//围绕此模式的匹配拆分给定输入序列。
查找:字符串没有封装
Matcher ----- public boolean find();//尝试查找与该模式匹配的输入序列的下一个子序列。
Matcher ----- public String group();//返回由以前匹配操作所匹配的输入子序列。
Ps: JDK提供的正则表达式的使用(以匹配为例):
特点:比较繁琐
建议:使用String提供的封装实现
简化使用步骤,String的源码实现,仍然是JDK的Pattern
四、java中处理正则表达式的类:
java.lang.Stringjava.util.regex.Pattern:模式类:字符串要被匹配的这么一个模式,该模式本身已经被编译过,使用的话效率要高很多。
java.util.regex.Matcher:匹配类:这个模式匹配某个字符串所产生的结果,这个结果可能会有很多个。
五、例子:
学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了简单的例子,并对它们作了详细的说明。package net.itcast.a.re;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 正则表达式的使用:
* 验证QQ号为例:
*
* 使用方式1:
* 1、编写正则表达式
* 2、将正则表达式构建成java对象
* 3、和一个数据构建生成匹配器
* 4、指向操作:
* 判断是不是合法
*
* 使用要素:
* 1、要验证的数据
* 2、匹配模式
* 3、调用Java封装好的API
*
*/
public class RE00 {
public static void main(String[] args) {
//1、编写正则表达式
String qqRE = "[1-9][0-9]{4,14}";
//2、调用API
Pattern p = Pattern.compile(qqRE); //编译正则表达式
Matcher m = p.matcher("a595306686"); //比较和匹配
//结果
boolean b = m.matches(); //调用方法,打印结果
System.out.println(b);
}
}
相关文章推荐
- 黑马程序员——面向对象三大特性学习总结
- 今天在看一些面试题的时候遇到的一个关于strcmp()返回值的细节问题
- Android面试题
- 【转】我想对所有新程序员说的一些话
- 百度面试题——top K算法
- java面试宝典整理
- (一个刚刚结束秋招的本科生)应届生面试经验
- 黑马程序员——分支语句if及switch的用法和注意事项
- Java面试宝典-变量声明和定义
- 黑马程序员-异常,包,多线程
- 黑马程序员--java基础语法下篇(day03)
- 月薪X万的程序员都避开了哪些坑
- SQL数据库语法面试题以及答案
- SSH面试常考题(6)
- SSH面试常考题(4)
- SSH面试常考题(3)
- SSH面试常考题(2)
- SSH面试常考题(1)
- 作为一名Java程序员,我为什么不在生产项目中转向Go
- list三大实现类及面试题必考