码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2016-08-24 17:26:49      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

A:字符
x 字符 x。举例:‘a‘表示字符a
\\ 反斜线字符。
\n 新行(换行)符 (‘\u000A‘)
\r 回车符 (‘\u000D‘)

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:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi

E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

 

 1 /*
 2  * 正则表达式:符合一定规则的字符串。
 3  */
 4 public class RegexDemo2 {
 5     public static void main(String[] args) {
 6         // 创建键盘录入对象
 7         Scanner sc = new Scanner(System.in);
 8         System.out.println("请输入你的QQ号码:");
 9         String qq = sc.nextLine();
10 
11         System.out.println("checkQQ:" + checkQQ(qq));
12     }
13 
14     public static boolean checkQQ(String qq) {
15         // String regex ="[1-9][0-9]{4,14}";
16         // //public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式
17         // boolean flag = qq.matches(regex);
18         // return flag;
19 
20         //return qq.matches("[1-9][0-9]{4,14}");
21         
22         return qq.matches("[1-9]\\d{4,14}");
23     }
24 }

 

 1 /*
 2  * 判断功能
 3  *        String类的public boolean matches(String regex)
 4  *
 5  * 需求:
 6  *         判断手机号码是否满足要求?
 7  * 
 8  * 分析:
 9  *         A:键盘录入手机号码
10  *         B:定义手机号码的规则
11  *             13436975980
12  *             13688886868
13  *             13866668888
14  *             13456789012
15  *             13123456789
16  *             18912345678
17  *             18886867878
18  *             18638833883
19  *         C:调用功能,判断即可
20  *         D:输出结果
21  */
22 public class RegexDemo {
23     public static void main(String[] args) {
24         //键盘录入手机号码
25         Scanner sc = new Scanner(System.in);
26         System.out.println("请输入你的手机号码:");
27         String phone = sc.nextLine();
28         
29         //定义手机号码的规则
30         String regex = "1[38]\\d{9}";
31         
32         //调用功能,判断即可
33         boolean flag = phone.matches(regex);
34         
35         //输出结果
36         System.out.println("flag:"+flag);
37     }
38 }
 1 /*
 2  * 分割功能
 3  *        String类的public String[] split(String regex)
 4  *        根据给定正则表达式的匹配拆分此字符串。 
 5  *
 6  * 举例:
 7  *         百合网,世纪佳缘,珍爱网,QQ
 8  *         搜索好友
 9  *             性别:女
10  *             范围:"18-24"
11  * 
12  *         age>=18 && age<=24
13  */
14 public class RegexDemo {
15     public static void main(String[] args) {
16         //定义一个年龄搜索范围
17         String ages = "18-24";
18         
19         //定义规则
20         String regex = "-";
21         
22         //调用方法
23         String[] strArray = ages.split(regex);
24         
25 //        //遍历
26 //        for(int x=0; x<strArray.length; x++){
27 //            System.out.println(strArray[x]);
28 //        }
29         
30         //如何得到int类型的呢?
31         int startAge = Integer.parseInt(strArray[0]);
32         int endAge = Integer.parseInt(strArray[1]);
33         
34         //键盘录入年龄
35         Scanner sc = new Scanner(System.in);
36         System.out.println("请输入你的年龄:");
37         int age = sc.nextInt();
38         
39         if(age>=startAge && age<=endAge) {
40             System.out.println("你就是我想找的");
41         }else {
42             System.out.println("不符合我的要求,gun");
43         }
44     }
45 }
 1 /*
 2  * 分割功能练习
 3  */
 4 public class RegexDemo2 {
 5     public static void main(String[] args) {
 6         // 定义一个字符串
 7         String s1 = "aa,bb,cc";
 8         // 直接分割
 9         String[] str1Array = s1.split(",");
10         for (int x = 0; x < str1Array.length; x++) {
11             System.out.println(str1Array[x]);
12         }
13         System.out.println("---------------------");
14 
15         String s2 = "aa.bb.cc";
16         String[] str2Array = s2.split("\\.");
17         for (int x = 0; x < str2Array.length; x++) {
18             System.out.println(str2Array[x]);
19         }
20         System.out.println("---------------------");
21 
22         String s3 = "aa    bb                cc";
23         String[] str3Array = s3.split(" +");
24         for (int x = 0; x < str3Array.length; x++) {
25             System.out.println(str3Array[x]);
26         }
27         System.out.println("---------------------");
28         
29         //硬盘上的路径,我们应该用\\替代\
30         String s4 = "E:\\JavaSE\\day14\\avi";
31         String[] str4Array = s4.split("\\\\");
32         for (int x = 0; x < str4Array.length; x++) {
33             System.out.println(str4Array[x]);
34         }
35         System.out.println("---------------------");
36     }
37 }
 1 /*
 2  * 我有如下一个字符串:"91 27 46 38 50"
 3  * 请写代码实现最终输出结果是:"27 38 46 50 91"
 4  * 
 5  * 分析:
 6  *         A:定义一个字符串
 7  *         B:把字符串进行分割,得到一个字符串数组
 8  *         C:把字符串数组变换成int数组
 9  *         D:对int数组排序
10  *         E:把排序后的int数组在组装成一个字符串
11  *         F:输出字符串
12  */
13 public class RegexTest {
14     public static void main(String[] args) {
15         // 定义一个字符串
16         String s = "91 27 46 38 50";
17 
18         // 把字符串进行分割,得到一个字符串数组
19         String[] strArray = s.split(" ");
20 
21         // 把字符串数组变换成int数组
22         int[] arr = new int[strArray.length];
23 
24         for (int x = 0; x < arr.length; x++) {
25             arr[x] = Integer.parseInt(strArray[x]);
26         }
27 
28         // 对int数组排序
29         Arrays.sort(arr);
30 
31         // 把排序后的int数组在组装成一个字符串
32         StringBuilder sb = new StringBuilder();
33         for (int x = 0; x < arr.length; x++) {
34             sb.append(arr[x]).append(" ");
35         }
36         //转化为字符串
37         String result = sb.toString().trim();
38         
39         //输出字符串
40         System.out.println("result:"+result);
41     }
42 }

 

 1 /*
 2  * 替换功能
 3  *      String类的public String replaceAll(String regex,String replacement)
 4  *      使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 
 5  */
 6 public class RegexDemo {
 7     public static void main(String[] args) {
 8         // 定义一个字符串
 9         String s = "helloqq12345worldkh622112345678java";
10 
11         // 我要去除所有的数字,用*给替换掉
12         // String regex = "\\d+";
13         // String regex = "\\d";
14         //String ss = "*";
15         
16         
17         // 直接把数字干掉
18         String regex = "\\d+";
19         String ss = "";
20 
21         String result = s.replaceAll(regex, ss);
22         System.out.println(result);
23     }
24 }
 1 /*
 2  * 获取功能
 3  *        Pattern和Matcher类的使用
 4  *        
 5  *        模式和匹配器的基本使用顺序
 6  */
 7 public class RegexDemo {
 8     public static void main(String[] args) {
 9         // 模式和匹配器的典型调用顺序
10         // 把正则表达式编译成模式对象
11         Pattern p = Pattern.compile("a*b");
12         // 通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串
13         Matcher m = p.matcher("aaaaab");
14         // 调用匹配器对象的功能
15         boolean b = m.matches();
16         System.out.println(b);
17         
18         //这个是判断功能,但是如果做判断,这样做就有点麻烦了,我们直接用字符串的方法做
19         String s = "aaaaab";
20         String regex = "a*b";
21         boolean bb = s.matches(regex);
22         System.out.println(bb);
23     }
24 }
 1 /*
 2  * 获取功能:
 3  * 获取下面这个字符串中由三个字符组成的单词
 4  * da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
 5  */
 6 public class RegexDemo2 {
 7     public static void main(String[] args) {
 8         // 定义字符串
 9         String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
10         // 规则
11         String regex = "\\b\\w{3}\\b";
12 
13         // 把规则编译成模式对象
14         Pattern p = Pattern.compile(regex);
15         // 通过模式对象得到匹配器对象
16         Matcher m = p.matcher(s);
17         // 调用匹配器对象的功能
18         // 通过find方法就是查找有没有满足条件的子串
19         // public boolean find()
20         // boolean flag = m.find();
21         // System.out.println(flag);
22         // // 如何得到值呢?
23         // // public String group()
24         // String ss = m.group();
25         // System.out.println(ss);
26         //
27         // // 再来一次
28         // flag = m.find();
29         // System.out.println(flag);
30         // ss = m.group();
31         // System.out.println(ss);
32 
33         while (m.find()) {
34             System.out.println(m.group());
35         }
36 
37         // 注意:一定要先find(),然后才能group()
38         // IllegalStateException: No match found
39         // String ss = m.group();
40         // System.out.println(ss);
41     }
42 }

 

正则表达式

标签:

原文地址:http://www.cnblogs.com/jiangjianzhu/p/5803459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!