正则表达式:
概述:符合某种正确规则的表达式。
理解:正则表达式就是一个字符串。
String类中的方法:
public boolean matches(String regex); //判断字符串与给定的 正则表达式是否匹配。
校验QQ:
规则:必须是数字,5-15位,0不能开头。
正则:[1-9]\\d{4,14}
分类:
字符类
[abc] abc其中的任意一个字符
[^abc] 除了abc之外的,任意一个字符
[a-zA-Z] 任意一个字母
[0-9] 任意的一个数字
预定义字符类
. 任意字符
\d 任意数字
\w 单词字符(所有的英文字母,数字以及下划线)
\W 非单词字符(一般是用来匹配特殊符号的)
数量词
X? 一次或者一次也没有
X* 零次 到 多次
X+ 一次 到 多次
X{n} 恰好n次
X{n,} 至少n次
X{n,m} 至少n次,最多不能超过m次。
切割功能:
public String[] split(String regex); //注意,如果想要按照.来切割,不能直接写.,而是写\\.
我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
思路:
1、通过切割,获取到字符串中的每个 数字形式的字符串。("91","27","46","38","50")
2、把切割后的字符串转成其对应的 int类型,用int[]来存储。
关键点:
int[]的长度是:切割后的字符串数组的长度
3、对int[]进行排序。
4、把int[]数组 拼接成 字符串。
替换功能:
public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
理解:
用replacement来替换,字符串中所有能跟regex匹配上的内容。
的字符连续出现两次或以上,就称为叠词。
分组功能:
从左至右计算其开括号(左括号)的形式来进行分组,每一个开括号就是一组。
(A(B(C)))
思考:请按照叠词切割: "sdqqfgkkkhjppppkl"
叠词:相同
掌握:
按照叠词切割的规则: (.)\\1+
叠词切割保留一个:
字符串对象名.replaceAll( "(.)\\1+" , "$1"); //$1代表的是 获取到组1里边的内容
中午做:
怎么切割路径?
String str = "C:\\HangGe Others File\\Office Software\\jdk1.7.0_51\\bin";
Pattern和Matcher:
Pattern p = Pattern.compile("a*b"); //获取到正则表达式(对象)
Matcher m = p.matcher("aaaaab");
//获取到匹配器(根据给定的字符串,获取到对应的匹配器对象)
boolean b = m.matches(); //通过匹配器对象调用meatches()方法,对字符串和正则进行校验
//上边三行相当于: sop( "aaaaab".matcher(a*b) );
练习题:找到字符串中的所有手机号
String str = "我的手机号是13161290000,我以前的手机号是15037360000,我对象的手机号是18710100000"
Matcher类中的两个方法:
public boolean find(); //根据正则去找,字符串中是否有能与正则匹配的 元素
public String group(); //获取到刚才找到的那个元素。
总结;
正则表达式在实际开发中,我们一般不会自己写,因为你自己写的别人也不敢用,所以一般是在网上找的,
我的要求是:能用咱们上午讲的内容,去看懂别人写的规则。
|
|