正则表达式:(Pattern)
概述:符合某种规则的字符串。
作用:实际开发中,一般使用正则来做校验的。
校验QQ:
1、不是是0开头的,
2、必须是5-15位的数字字符
[1-9]\\d{4,14}
String类中的方法:
public boolean matches(String regex); //判断字符串是否与给定的正则匹配。
分类:
字符类:
[abc] : a,b,c三者中的任意一个
[^abc] : 只要不是a,b,c三者中的任何一个就可以
[a-zA-Z]:所有的英文字母
[0-9] : 所有的数字
预定义字符类:
. 任意字符
\d 所有的数字
\w 单词字符(所有的英文字母,数字,下划线) 相当于[a-zA-Z0-9_]
\\ 表示一个\
\\. 表示字符.
数量词:
X? :一次或者一次也没余
X* :零次或者多次 (可以是零次,也可以是1次)
X+ :一次或多次 (至少一次)
X{n} : 恰好n次。
X{n,} : 至少n次
X{n,m} : 至少n次,至多不超过m次(包括m次)
功能:
分割功能:
public String[] split(String regex)
//张三 lisi 王五
案例:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
思路:
1、切割字符串,获取到一个新的字符串数组。
2、遍历字符串数组,把每一个遍历到的元素 转换成 int,并将结果存到int数组中。
3、排序。(冒泡,选择,sort())
4、把排序后的int数组转成字符串。(用StringBuffer,StringBuilder)
替换功能:
public String replaceAll(String regex, String replacement);
用给定的字符串replacement 去替换,字符串(谁调用就是谁)中符合正则规则的字符串(regex)。
分组:
怎么分组?
通过从左至右计算其开括号的形式类分组,并且对开括号进行编号(编号是从1开始)。
示例:
((A)(B(C)))
组零永远代表整个表达式。
第一组:(A)(B(C))
第二组:A
第三组:B(C)
第四组:C
叠词:
相同的字符连续出现两次或以上,就是叠词。
叠词的切割规则:
(.)\\1+
叠词切割,保留一个:
replaceAll("(.)\\1+","$1");
切割路径:
示例:
D:\\教案\\14_第十四天\\day14\\video
正则表达式:
\\\\
思考:请按照叠词切割: “sdqqfgkkkhjppppkl“ (1分钟)
Patter(模式)和Matcher(匹配器)
//public boolean matches(String regex); //判断字符串是否与给定的正则匹配。
// "akskjflsjdf".matches("正则");
典型的用法:
Patter p = Patter.compile("正则"); //获取到正则表达式
Matcher m = p.matcher("akskjflsjdf"); //获取匹配器
boolean b = m.matches();
"我的手机号是13161290281,我以前的手机号是1314561232,在之前是12345678920"
Matcher类中:
public boolean find();
public String group();
//思考:如何把一个字符串中的手机号码获取出来
Patter p = Patter.compile("正则"); //获取到正则表达式
Matcher m = p.matcher("字符串-"); //获取匹配器
while(m.find()){
String phone = m.group();
}
|
|