perlmy filesJava

正则表达式

2021-05-11  本文已影响0人  GuoDJ

正则,正则表达式

什么是正则表达式

正则表达式能够描述字符串的格式,通常用于验证字符串内容;
正则表达式并不是java语言的内容,而是独立于编程语言的体系;

为什么需要正则表达式

在人机信息互动时,可以让计算机验证用户输入的内容是否匹配比如Email,手机号,身份证号等

正则表达式字符说明一个字符

一个字符

转译字符

\n 换行
\r 回车
\t 制表符,一个缩进量
\ 代表一个反斜线字符
\' 代表一个单引号(撇号)字符
\" 代表一个双引号字符
\0 空字符(NULL)

预定义字符


数量词


matches方法

package chapter04;

public class Regex_matches {
    public static void main(String[] args) {
        System.out.println("判断字符串表示的字符,是否是abc其中任意一个");
        
        String a = "%";
        System.out.println(a);
        String regex = "\\W";//正则 == 规则
        
        boolean flag = a.matches(regex);
        System.out.println(flag);
        
    }
}

正则验证Email

字符串支持正则表达式方法—:

boolean matches(String regex)

使用给定的正则表达式验证当前字符串的格式,匹配通过则返回true否则返回false

package day02;
/**
 * 字符串支持正则表达式的相关方法之一:
 * boolean matches(String regex)
 * 该方法是用给定的正则表达式验证当前字符串是否满足
 * 格式要求,满足则返回true.
 * 这里需要注意,正则表达式就算不添加边界匹配符(^...$)
 * 也是做全匹配验证。
 * @author adminitartor
 *
 */
public class String_matches {
    public static void main(String[] args) {
        /*
         * email的正则表达式
         * [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
         * 
         * 
         */
        String email = "fancq@tedu.cn";
        
        String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-zA-Z]+)+";
        
        boolean tf = email.matches(regex);
        if(tf){
            System.out.println("是邮箱");
        }else{
            System.out.println("不是邮箱");
        }
        
    }
}

正则拆分字符串

string支持正则表达式方法二:

String[] split(String regex)

将当前字符串按照满足正则表达式的部分进行拆分,返回拆分后的每段内容

package day02;
/**
 * 字符串支持正则表达式方法二:
 * String[] split(String regex)
 * 将当前字符串中满足给定正则表达式的部分拆分,将
 * 剩下的所有部分以一个数组的形式返回。
 * @author adminitartor
 *
 */
public class String_split {
    public static void main(String[] args) {
        String str = "abc123def456ghi789jkl";
        /*
         * 根据数字拆分,保留所有字母部分
         */
        String[] data = str.split("[0-9]+");
        System.out.println("拆分出"+data.length+"项");
        
        for(int i=0;i<data.length;i++){
            System.out.println(data[i]);
        }
        
    }
}

正则替换字符串

String支持正则表达式方法三:

String replaceAll(String regex,String str)

将当前字符串中满足正则表达式的部分替换为给定的内容。

package day02;
/**
 * 字符串支持正则表达式方法三:
 * String replaceAll(String regex,String str)
 * 将当前字符串中满足正则表达式的部分替换为给定内容
 * @author adminitartor
 *
 */
public class String_replaceAll {
    public static void main(String[] args) {
        String str = "abc123def456ghi789jkl";
        /*
         * 将当前字符串中的数字部分替换为"#NUMBER#"
         */
        str = str.replaceAll("\\d+", "#NUMBER#");
        System.out.println(str);
    }
}

练习1:图片重命名

package day02;
/**
 * 图片重命名
 * @author adminitartor
 *
 */
public class Test1 {
    public static void main(String[] args) {
        String imgName = "123.jpg";
        
//      String[] names = imgName.split("\\.");
//      
//      long time = System.currentTimeMillis();
//      
//      imgName = time + "." + names[1];
//      System.out.println(imgName);
        
        
        String name = imgName.substring(imgName.indexOf("."));
        imgName = System.currentTimeMillis()+name;
        System.out.println(imgName);
    }
}

练习2:替换敏感词汇

package day02;

public class Test2 {
    public static void main(String[] args) {
        String regex = "(wqnmlgb|nc|cnm|mdzz|djb|sb|nmlgb)";
        String message = "wqnmlgb!你这个sb!你怎么这么的nc!nmlgb!你个djb!";
        
        message = message.replaceAll(regex, "****");
        System.out.println(message);
    }
}
上一篇下一篇

猜你喜欢

热点阅读