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

java学习之正则表达式一

2016-07-15 10:09 190 查看
java的正则表达式的学习------

1、主要是用来操作---字符串数据,

正则表达式------是通过一些特定的符号来体现的。就是说正则表达式就是一些特定的符号。

所以我们为了掌握正则表达式----我们必须学会一些符号。-----也就是会背一些符号。

正则表达式最然简化了代码,但阅读性变差了。

下面我们学一些特定的符号:

学到这里-----我们要知道正则表达式的常见的功能是什么-----就是它能做一些什么东西----能帮我们解决什么

问题。

    public class RegexDemo2 {
/*
* 正则表达式对字符串的常见的操作------- 原理:---- 正则表达式的原理---就是使用了Pattern对象,使用Matcher匹配的对象
* 进行字符串与正则表达式的匹配,那么String字符串中为什么会给我们暴露出
* 使用正则表达的是的操作的方法呢---这是因为这样做方便了字符串的操作。如 这里的"匹配、切割、替换、获取:使用的基本的原理都是使用这个原理"。

* 1、匹配 其实使用的就是String类中的matches方法。 2、切割 其实使用的就是String类中的split方法。 3、替换
* 其实使用的就是String类中的replaceAll()方法。 4、获取----只能用以下的方式完成。 //将正则进行封装成对象的封装
* Pattern p = Pattern.compile("a*b");
* //通过正则对象的matcher方法字符串关联,获取要对字符串操作的匹配器对象Matcher。 Matcher m =
* p.matcher("aaaaab"); //通过Matcher匹配器对象的方法对字符串进行操作。 boolean b =
* m.matches();

*/
public static void main(String[] args) {
// f_1();
// f_2();
// f_3();
f_4();
}
/*
* 演示匹配的操作-----
*/
public static void f_1() {
// 匹配手机号码是否正确
String tel = "18770815154";
// 13.....,15.....,18.......
String regex = "1[358][0-9]{9}";
String regex1 = "1[358]\\d{9}";
// regex和regex的验证的效果是一样的。
boolean b = tel.matches(regex1);
System.out.println(tel + ":" + b);
}
/*
* 切割功能的演示------

* 组 ((A)(B(C)))-----有四组====“(、(、(、(”; 切割中组的应用较难-----下面将进行完善的学习。
*/
public static void f_2() {
/*
* 下面的可以切割 String str="zhangsan xiaoqiang zhaosi"; String[]
* names=str.split(" "); for(String name:names){
* System.out.println(name); }
*/
// 下面的可以切割,连空格也一起切了。
/*
* String str="zhangsan    xiaoqiang   zhaosi"; //String[]
* names=str.split(" ");//没使用正则表达式的切割 String[] names=str.split(" +"
* );//使用到正则表达式的切割
*/
// String str="zhangsan.xiaoqiang.zhaosi";
// String[] names=str.split(" ");//没使用正则表达式的切割
// String[] names=str.split("\\.");//点"."在正则表达式中是一个特殊的符号。
String str = "zhangsantttxiaoqiangmmmmmmzhaosi";
String[] names = str.split("(.)\\1+");// 第一组的内容。
// 在正则表达式中复用是小括号"()"
for (String name : names) {
System.out.println(name);
}
}
/*
* 替换功能的演示-------- 其实使用的就是String类中的replaceAll()方法。
*/
public static void f_3() {
String str = "zhangsantttxiaoqiangmmmmmmzhaosi";
// str=str.replaceAll("(.)\\1+", "#");//将叠词替换转成#号
str = str.replaceAll("(.)\\1+", "$1");// '$'符号在正则表达式中的应用。这里的$符的获取是获取前面的第一组正则的规则。
System.out.println(str);
// 完成187***111的功能
String tel = "18770000111";
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1***$2");
System.out.println(tel);
}
/*

* 获取功能的演示------- 正则表达式的编译的形式-----Pattern:-----将正则表达式封装成对象。

/*正则表达式本身也是一个对象---Pattern。

正则表达式的编译表达式形式---也就是说你先将正则表达式先封装成对象。

----指定为字符串的正则表达式必须首先被编译为此类的实例。可将得到的正则规则用于创建Matcher(匹配器)

对象。依照正则表达式,该对象可以与任意的字符的序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中。

所以多个匹配器可以共享一个正则表达式(模式)。

*/

正则只是负责---表达式的封装

要想使用这个表达式----那就要用到匹配器对象Matcher

*
* //将正则进行封装成对象的封装 Pattern p = Pattern.compile("a*b");
* //通过正则对象的matcher方法字符串关联,获取要对字符串操作的匹配器对象Matcher。 Matcher m =
* p.matcher("aaaaab"); //通过Matcher匹配器对象的方法对字符串进行操作。 boolean b =
* m.matches();
*/
public static void f_4() {
String str = "ni hao you lai hfhfh le";
String regex = "\\b[a-z]{3}\\b";// 单词边界的表达方式----"\b"
// 将正则封装成对象
Pattern p1 = Pattern.compile(regex);
// 通过正则对象获取匹配器对象
Matcher m = p1.matcher(str);
// 使用Matcher对象的方法对字符串进行操作。
// 既然要获取三个字母组成的单词
// 查找。find()方法的使用
/*
* m.find();//查找了一个 System.out.println(m.group());//获取匹配的子序列
*/
// 查找多个
while (m.find()) {
System.out.println(m.group());// 获取匹配的子序列
System.out.println(m.start() + ":" + m.end());
}

}

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