----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
正则:
好处:正则的出现,对字符串的复杂操作变得更为简单。
特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操
作。符号的出现,简化了代码的书写。
弊端:符号的出现虽然简化了书写,但是却降低了阅读性。
其实更多是用正则解决字符串操作的问题。
组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从 1 开始。
只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\\。
(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。
如果要操作正则,那么必须使用一系列的正则匹配符号,而所有的符号都在java.util.regex包中
方法:matchs正则验证
replaceAll全部替换
replaceFirst替换首个
split(String regex)全部拆分
split(String regex,int limit)部分拆分
一、正则符号:
1、表示单个字符(每出现一个只表示一位)
x:表示只能由x组成
\\:表示转义字符“\”
\t:匹配“tab”键
\n:匹配换行
2、表示字符的选用范围
[abc]:表示可能是a.b.c中的任意一个
[^abc]:表示不是a.b.c中任意一个
[a-zA-Z]表示任意一位字母
[0-9]表示任意一位数字
3、 简化表达式
· :表示任意一位字符
\d:表示一位数字,相当于[0-9]
\D表示不是一位数字相当于[^0-9]
\s表示任意一位空格
\S表示不是任意一位空格
\w表示大小写字母,数字,_中任意一位
\W相反
4、 边界匹配
^写在正则之前,表示正则开始
$写在正则最后,表示正则结束
5 数量表示:如果没有数量,每一个表示一位,有了数量才能表示多位
正则?:表示只能出现0位或者1位
正则*表示此正则出现0次,一次,或多次
正则+表示出现一次或多次
正则{n}表示正好出现n次
正则{n,}表示出现n次以上
正则{n,m}表示最少n次,最多m次
6、逻辑操作符
正则X正则Y表示正则X判断后执行正则Y
正则X|正则Y表示两个正则二选一
(正则)包含多个正则,成为一组
38. public static void functionDemo_1??{
39. //匹配手机号码是否正确
40. String tel = "13821882946";
41.
42. String regex = "1[358]\\d{9}";
43.
44. boolean b = tel.matches?regex?;
45.
46. System.out.println?tel + ":" + b?;
47. }
48.
49.
52. public static void functionDemo_2??{
53. String str = "zhangsan xiaoqiang zhaoliu";
54.
55. String[] names = str.split?" +"?;
56.
57. for?String name : names?{
58. System.out.println?name?;
59. }
60. }
61.
62. public static void functionDemo_3??{
63. String str = "zhangsan.xiaoqiang.zhaoliu";
64.
65. String[] names = str.split?"\\."?;
66.
67. for?String name : names?{
68. System.out.println?name?;
69. }
70. }
71.
72.
80. public static void functionDemo_4??{
81. String str = "zhangsanttttxiaoqiangmmmmmzhaoliu";
82.
83. //?.?表示一组,\\1+表示与第1组相同的出现1次以上
84. String[] names = str.split?"?.?\\1+"?;
85.
86. for?String name : names?{
87. System.out.println?name?;
88. }
89. }
90.
91.
94. public static void functionDemo_5??{
95. String str = "zhangsanttttxiaoqiangmmmmmzhaoliu";
96.
97. //$表示前一个参数的第一组
98. str = str.replaceAll?"?.?\\1+","$1"?;
99.
100. System.out.println?str?;
101. }
102.
103. public static void functionDemo_6??{
104. String str = "15800001111";
105.
106. str = str.replaceAll?"?\\d{3}??\\d{4}??\\d{4}?","$1****$2"?;
107.
108. System.out.println?str?;
109. }
110.
111.
118. public static void functionDemo_7??{
119. String str = "da jia hao,ming tian bu fang jia";
120.
121. // \\b表示单词边界
122. String regex = "\\b[a-z]{3}\\b";
123.
124. //1. 将正则封装成对象
125. Pattern p = Pattern.compile?regex?;
126.
127. //2. 通过正则对象获取匹配器对象
128. Matcher m = p.matcher?str?;
129.
130. //使用Matcher对象的方法对字符串进行操作。
131. //既然要获取三个字母组成的单词。
132. //查找:find;
133. while m.find{
134. System.out.println?m.group;//获取匹配的子序列
135. System.out.println m.start + ":" + m.end;
136. }
137. }
138. }
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------