黑马程序员技术交流社区
标题:
java基础 正则表达式
[打印本页]
作者:
磊子
时间:
2015-9-13 22:46
标题:
java基础 正则表达式
正则表达式:(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();
}
作者:
天涯莫名
时间:
2015-9-13 23:04
路过,支持一下
作者:
13160123235
时间:
2015-9-13 23:06
走过,路过,不错过……
作者:
旦夕
时间:
2015-9-13 23:13
鼓掌,不错哦
作者:
磊子
时间:
2015-9-14 23:26
旦夕 发表于 2015-9-13 23:13
鼓掌,不错哦
嘿嘿 加油
作者:
18734903493
时间:
2015-9-14 23:38
少年居然详细如斯
作者:
小二阳
时间:
2015-9-14 23:48
顶一个,可以的
作者:
0825王欢
时间:
2015-9-14 23:51
学习。。。。。。。。。。。。。。。
作者:
cloud1991
时间:
2015-9-15 09:50
赞一个,总结的挺细
作者:
插兜
时间:
2015-9-15 11:36
完全忘记有学过正则
作者:
水果牛牛
时间:
2015-9-15 12:10
学得好认真啊
作者:
867379393
时间:
2015-9-15 14:19
路过....。
作者:
a334
时间:
2015-9-15 14:25
我觉得 正则表达式 通篇了解一下!用的时候再查 就好了
作者:
2073488679
时间:
2015-9-15 14:47
做的可以
作者:
heimatai6
时间:
2015-9-16 00:02
路过,支持一下
作者:
18664300701
时间:
2015-9-16 00:15
嗯,感觉用的很少
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2