黑马程序员--正则表达式学习笔记
2013-06-10 12:20
453 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------
正则表达式:符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差。
具体操作功能:
1、匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
1)手机号码校验
String tel = "13900001111";
String telReg = "1[358]\\d{9}";
tel.matches(telReg);
2)邮箱地址校验
String mail = "abc12@sina.com";
String reg1 = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。
reg2 = "\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配。
mail.matches(reg1);
2、切割:String split();
String str ="adfa afaf afaf";
String reg = " +";//按照多个空格来进行切割
String[] arr = str.split(reg);
为了可以让规则的结果被重用,可以将规则封装成一个组。用()完成。组的出现都有编号。
从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。
3、替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String str = "erkktyqqquizzzzzo"; //将重叠的字符替换成单个字母。zzzz->z
reg="(.)\\1+";
newStr="$1";
str = str.replaceAll(reg,newStr);
4、获取:将字符串中的符合规则的子串取出。
操作步骤:
1、将正则表达式封装成对象。
2、让正则对象和要操作的字符串相关联。
3、关联后,获取正则匹配引擎。
4、通过引擎对符合规则的子串进行操作,比如取出。
String str = "";
String reg = "\\b[a-z]{4}\\b";
//将规则封装成对象。
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
//将规则作用到字符串上,并进行符合规则的子串查找。
boolean b = m.find();
//用于获取匹配后结果。
m.group();
字符
x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
组和捕获
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
组零始终代表整个表达式。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------
----------------------
正则表达式:符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差。
具体操作功能:
1、匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
1)手机号码校验
String tel = "13900001111";
String telReg = "1[358]\\d{9}";
tel.matches(telReg);
2)邮箱地址校验
String mail = "abc12@sina.com";
String reg1 = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。
reg2 = "\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配。
mail.matches(reg1);
2、切割:String split();
String str ="adfa afaf afaf";
String reg = " +";//按照多个空格来进行切割
String[] arr = str.split(reg);
为了可以让规则的结果被重用,可以将规则封装成一个组。用()完成。组的出现都有编号。
从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。
3、替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String str = "erkktyqqquizzzzzo"; //将重叠的字符替换成单个字母。zzzz->z
reg="(.)\\1+";
newStr="$1";
str = str.replaceAll(reg,newStr);
4、获取:将字符串中的符合规则的子串取出。
操作步骤:
1、将正则表达式封装成对象。
2、让正则对象和要操作的字符串相关联。
3、关联后,获取正则匹配引擎。
4、通过引擎对符合规则的子串进行操作,比如取出。
String str = "";
String reg = "\\b[a-z]{4}\\b";
//将规则封装成对象。
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
//将规则作用到字符串上,并进行符合规则的子串查找。
boolean b = m.find();
//用于获取匹配后结果。
m.group();
字符
x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
组和捕获
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
组零始终代表整个表达式。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!
----------------------
相关文章推荐
- 黑马程序员:正则表达式学习笔记
- 黑马程序员_学习笔记第24天——正则表达式
- 黑马程序员_学习笔记4 IO流以及正则表达式解决一个传智播客的问题
- 黑马程序员 JAVA学习笔记 —— 正则表达式
- 黑马程序员_Java正则表达式学习笔记
- 黑马程序员——java学习笔记--正则表达式
- 黑马程序员------java学习笔记之正则表达式
- 黑马程序员java学习笔记——正则表达式、反射
- 黑马程序员——学习笔记13.Java正则表达式
- 黑马程序员 java学习笔记 Day8:正则表达式
- 黑马程序员 java学习笔记--正则表达式
- 黑马程序员--学习笔记--正则表达式
- 黑马程序员_学习笔记:17) 正则表达式
- 黑马程序员_正则表达式学习笔记(1)
- 黑马程序员 java学习笔记——正则表达式
- 黑马程序员_.NET学习14(正则表达式笔记)
- 黑马程序员_学习笔记第25天——正则表达式
- 黑马程序员--Java基础学习笔记【正则表达式、常用API】
- 学习笔记(8)——正则表达式
- Oracle 学习笔记: 正则表达式