正则表达式

正则表达式

概述
	正则表达式就是正确规则的表达式
	用来描述或者匹配一系列符合某个句法规则的字符串
组成规则
    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]
        \\D [^0-9]
        \\w [a-zA-Z_0-9]
        \\W [^a-zA-Z_0-9]   
        \\s 匹配空格字符	
        \\S 不是空格
    D:边界匹配器
        ^ 行的开头 
        $ 行的结尾 
        \\b 单词边界
            就是不是单词字符的地方。
            举例:hello world?haha;xixi
    E:Greedy 数量词 
        X?		X一次或一次也没有 比如""空串 就是没有
        X* 		X零次或多次  大于等于1次 都算多次
        X+ 		X一次或多次
        X{n}	X恰好n次 
        X{n,} 	X至少n次 
        X{n,m}	X至少n次 但是不超过 m 次 
    F:匹配中文字符 [\u4e00 -\u9fa5]   

判断功能

String类
	public boolean matches(String regex)
	判断字符串是否与regex正则表达式相匹配
校验用户邮箱
public static void main(String[] args) {
    String mail = "sdfasdf@163.com";
    //6~18 个字符,可使用字母、数字、下划线,需要以字母开头
    //正则表达式
    String regex = "[a-zA-Z]\\w{5,17}@163.com";
    //判断mail是否符合regex的规则
    boolean matches = mail.matches(regex);
    System.out.println(matches);//true
}

分割功能

String类
	public String[] split(String regex)
	分割满足regex正则表达式的字符串
字符串排序
/*
需求:
将字符串 "91    27  46      38     50"
变为 "27 38 46 50 91"
*/
public static void main(String[] args) {
    String str = "91    27  46      38     50";
    //通过正则表达式分割字符串s
    String[] arr = str.split("[^0-9]+");
    //将String类型数组arr转换成int类型数组newArr
    int[] newArr = new int[arr.length];
    for (int i = 0; i < arr.length; i++) {
        newArr[i] = Integer.parseInt(arr[i]);
    }
    //排序
    Arrays.sort(newArr);
    //将int类型数组转换成字符串
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < newArr.length; i++) {
        stringBuilder.append(newArr[i]).append(" ");
    }
    //将StringBuilder转换为String
    String s = stringBuilder.toString().trim();
    System.out.println(s);
    //27 38 46 50 91
}

替换功能

String类
	public String replaceAll(String regex,String replacement)
	将字符串replacement替换满足regex正则表达式的字符串
替换练习
public static void main(String[] args) {
    /*
	将字符串 "91    27  46   38     50"
	变为 "91=27=46=38=50"
	*/
    String str = "91    27  46   38     50";
    String s = str.replaceAll(" +", "=");
    System.out.println(s);
    //91=27=46=38=50
}

Pattern和Matcher

Pattern类 模式器,用来封装一个正则表达式
Matcher类 匹配器,用来传入待匹配数据
调用顺序
	Pattern p = Pattern.compile("[a-z]");
	Matcher m = p.matcher("abc");
	boolean b = m.matches();

获取功能

Pattern和Matcher结合使用
    先使用Matcher.find()找到 
    再使用Matcher.group()获取
调用顺序
	Pattern p = Pattern.compile("[a-z]");
	Matcher m = p.matcher("abc");
	boolean b = m.find();
	String s = m.group();
获取练习
public static void main(String[] args) {
    String str = "hello world?haha;xixi";
    Pattern p = Pattern.compile("\\b[a-z]{4}\\b");
    Matcher m = p.matcher(str);
    while (m.find()){
        String s = m.group();
        System.out.println(s);
    }
    //haha
    //xixi
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值