正则表达式



1
正则表达式:符合一定规则的字符串
2
规则字符在java.util.regex Pattern类中

A:字符
x 字符x(举例:a,1)
\\ 反斜线字符

B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[0-9] 0-9字符

C:预定义字符类
. 任何字符
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]


D:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
记不住就去百度
3
判断功能:
public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
需求1:找出规则,写出正则(1[38][0-9]{9}),校验电话号码
13245678901 13332345678 13456789012 18812345678 18999999999
18666666666 18786868686

1 String number = "13245678901";
2         //正则表达式
3         String reg = "1[38][0-9]{9}";
4         //调用maches(String reg)进行判断指定字符串是否匹配指定的正则表达式
5         boolean flag = number.matches(reg);
6         System.out.println(flag);
需求1

 

需求2:找出规则,写出正则(String reg = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\\.[comnet]{2,3})+"),校验邮箱
sunmeng@163.com zhangsan@126.com lisi@sina.com wxd1221@sina.com.cn
csf@gmail.com 1512345@qq.com

1 String email = "zhangsan@126.com";
2         //写一个正则表达式验证这些个邮箱
3         String reg = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\\.[comnet]{2,3})+";
4         //依据正则表达式来验证上面的邮箱
5         System.out.println(email.matches(reg));
需求2

4
分割功能
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
需求1:
分割如下字符串:
String s = "aa,bb,cc";
String s2 = "aa.bb.cc";
String s3 = "aa bb cc";
String s4 = "aa bb cc";
String s5 = "D:\\baidu\\20150826\\day14";

1  String s5 = "D:\\baidu\\20160826\\day14";
2         String reg = "\\\\";
3         String[] strs = s5.split(reg);
4         for (int i = 0; i < strs.length; i++) {
5             System.out.println(strs[i]);
4.需求1

运行结果如下:

D:
baidu
20160826
day14


需求2:
我有如下一个字符串:”91 27 46 38 50”
请写代码实现最终输出结果是:”27 38 46 50 91”

 1 //切割字符串
 2         String s = "91 27 46 38 50";
 3         String reg = " ";
 4         String[] strs = s.split(reg);
 5         
 6         //遍历字符串数组,并定义一个int[]
 7         int[] arr = new int[strs.length];
 8         for (int i = 0; i < strs.length; i++) {
 9             arr[i] = Integer.parseInt(strs[i]);
10         }
11         
12         //排序int[]
13         Arrays.sort(arr);
14         
15         //遍历数组
16         StringBuffer sb = new StringBuffer();
17         for (int i = 0; i < arr.length; i++) {
18             sb.append(arr[i]+" ");
19         }
20         
21         //将sb转换为String类型
22         System.out.println(sb.toString());
4.需求2

运行结果如下:

27 38 46 50 91 


5
替换功能
public String replaceAll(String regex,String replacement):把符合regex的用replacement替换
需求:字符串中的数字使用*代替

 

1 String s = "我的银行卡号是:6102344354565";
2         String reg = "[0-9]";
3         String newStr = s.replaceAll(reg, "*");
4         System.out.println(newStr);
5.需求

 

 

 

运行结果如下:

我的银行卡号是:*************

posted on 2017-04-27 13:09  少放辣子  阅读(180)  评论(0编辑  收藏  举报