正则表达式

来源:互联网 发布:php 根据ip 查询地区 编辑:程序博客网 时间:2024/06/03 17:59

正则表达式

正则表达式:符合一定规则的字符串
在API中查询Pattern类即可查看正则表达式的要求与规则

注意:以后不需要我们自己写需要匹配的正则表达式,直接网上百度就可以了!

规则字符在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 次

判断功能:
public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。

分割功能
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。

public String replaceAll(String regex,String replacement):把符合regex的用replacement替换

例如:案例:键盘录入qq号码,校验QQ号码。
需求:
1:要求必须是5-15位数字
2:0不能开头

用正则表达式表示就是:[1-9][0-9]{4-15}

package com.thz_01;import java.util.Scanner;/** * 案例: 键盘录入qq号码,校验QQ号码。  * 需求: 1:要求必须是5-15位数字          * 2:0不能开头 */public class RegexDemo {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        // 键盘录入qq号码        System.out.println("请输入您的qq号码");        // 获取录入数据        String qq = sc.nextLine();        //创建方法,里面使用正则表达式实现        System.out.println(isCheck2(qq));    }    private static boolean isCheck2(String qq) {        //定义正则表达式        String reg = "[1-9][0-9]{4,14}";        return qq.matches(reg);    }}
package com.edu_02;public class RegexDemo {    public static void main(String[] args) {        // 校验电话号码        /*         * 13245678901 13332345678 13456789012 18812345678 18999999999         * 18666666666 18786868686         */        //定义正则表达式        String reg = "1[38][0-9]{9}";        //System.out.println("键盘输入电话号码");        String number = "13245678901";        System.out.println(number.matches(reg));    }}
package com.thz_01;public class RegexDemo {    public static void main(String[] args) {        /**         *    分割如下字符串:           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";         */         String s = "aa,bb,cc";         String reg = ",";         String[] strS = s.split(reg);         for (int i = 0; i < strS.length; i++) {            System.out.println(strS[i]);        }         System.out.println("--------------------");         String s2 = "aa.bb.cc";         String reg2 = "\\.";         String[] strS2 = s2.split(reg2);         for (int i = 0; i < strS2.length; i++) {            System.out.println(strS2[i]);        }         System.out.println("-------------------------");         String s3 = "aa bb cc";         String reg3 = " ";         String[] strS3 = s3.split(reg3);         for (int i = 0; i < strS3.length; i++) {            System.out.println(strS3[i]);        }         System.out.println("-----------------");         String s4 = "aa   bb                     cc";         String reg4 = " +";         String[] strS4 = s4.split(reg4);         for (int i = 0; i < strS4.length; i++) {            System.out.println(strS4[i]);        }         System.out.println("--------------------");         String s5 = "D:\\baidu\\20150826\\day14";         String reg5 = "\\\\";         String[] strS5 = s5.split(reg5);         for (int i = 0; i < strS5.length; i++) {            System.out.println(strS5[i]);        }    }}
package com.thz_01;import java.util.Arrays;/* *   我有如下一个字符串:”91 27 46 38 50”       请写代码实现最终输出结果是:”27 38 46 50 91” */public class SplitExercise {    public static void main(String[] args) {        String str = "91 27 46 38 50";        //设定正则表达式        String reg = " ";        //运用split方法切割        String[] strs = str.split(reg);        //将String数组转换为int数组并排序        int[] arr = new int[strs.length];        for (int i = 0; i < arr.length; i++) {            arr[i] = Integer.parseInt(strs[i]);        }        //排序        Arrays.sort(arr);        //将int[]转换为StringBuffer        StringBuffer sb = new StringBuffer();        for (int i = 0; i < arr.length; i++) {            sb.append(arr[i]+" ");        }        //将StringBuffer转换为String        System.out.println(sb.toString());    }}
0 0
原创粉丝点击