首页 > 代码库 > 黑马程序员——正则表达式
黑马程序员——正则表达式
正则表达式:符合一定规则的表达式
作用:用于专门操作字符串
好处:可以简化对字符串的复杂操作
弊端:符号定义越多,正则表达式越长,阅读性越差
特点:用一些特殊的符号来表示一些代码操作,这样可以简化书写,所以学习正则表达式,就是在学习一些特殊符号的应用
使用方式:四种,分别为匹配、切割、替换、获取
(一)匹配
在JDK API中,详细的明确了各种字符及其所表示意义,比较常用的有一下几项:
[abc] 该位上是a或b或c [a-z] 该位上是a到z的字符 [^abc] 任何字符,除了a,b,c [a-zA-Z] 任意一个英文字母
[a-d[m-p]]a到d或m到p . 任何字符 \d 数字 \D 非数字
\s 空白字符 \S 非空白字符 \w 单词字符,即[a-zA-Z_0-9] \W 非单词字符
符号规定太多,现在也只能勉强记下这些比较常用的,真正用的时候得多查查JDK API了.
一些比较常用的正则表达式:
匹配电话号码的正则表达式:"1[358]\\d{9}"
匹配邮箱的正则表达式:"[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";(较为精确的匹配)
"\\w+@\\w+(\\.\\w+)+";(相对不太精确的匹配)
(二)切割
String str="zhangsan lisi wangwu ";String reg=" +"; //加号表示一次或多次 ?一次或一次也没有 * 零次或多次 x{n} n次
//x{n,} 至少n次 x{n,m}至少n次,至多m次。
组的概念:将字符串"wwwtredhhhhqqqqqhuyrtoo"中的重复字符减少至一个。
使用正则表达式"(.)\\1+"
组的概念:按照叠词完成切割,为了可以让规则的结果被重用,可以将规则封装成一个组,用()完成,组的出现都有编号,从1开始,想要使用已有的组可以通过
\n(n是组的编号)的形式来获取。
(三)替换
使用replaceAll(String reg,String newString)方法,可定义一个方法如:replaceAllDemo(String str,String reg,Sring newStr),其中str是被操作字符串,
reg是正则表达式,newStr是替换后的字符串。
将"qwe12344scdc343546rtyu6767u"重的数字替换成"#" reg="\\d+";
将重叠的字符替换成单个字符 reg="(.)\\1+" 后面引用这个组时用"$1"
(四)获取
将字符串中符合规则的字串取出
步骤:1,将正则表达式封装成对象
2,让正则对象和要操作的字符串相关联
3,关联后,获取正则匹配引擎
4,通过引擎对符合规则的子串进行操作,比如取出
练习1、找出字符串“ming tian jiu yao fang jie le,da jia”中由三个字母组成的字符串
代码如下:
运行结果如下:
以上是我关于正则表达式的学习总结,不足之处,多多指教。
黑马程序员——正则表达式