正则表达式定义了字符串的模式,本质是一种特殊的字符串对象。

正则表达式也可以用来搜索,编辑或处理文本。

String 支持正则表达式方法

.replaceAll()

.replaceFirst()

.split()

.matches()

字符

说明

实例

^

表达式开始

$

表达式结尾

[358a-z]

一个符号,符号范围在3,5,8,a-z

\d === [0-9]

代表一位数字

\\d{9}

\d+

代表1个数字,或多个数字

相当[0-9]{1,}

\d{3}

代表3个数字

相当于[9-9]{3}

[\u4e00-\u9fa5]{2,8}

代表2到8个汉字字符

*

代表0个或多个前边的符号 {0,}

[a-z]*

.

代表1个任意的符号

str.matches(“^.+$”)

+

代表1个或多个前边的符号{1,}

\\d+

?

代表0个或1个前边的符号 {0,1}

{n}

n个

{n,}

n个或多个

{m,n}

[a-zA-Z_0-9]{6,18} 和 \w{6,18}

\D

[^0-9]

\w

[a-zA-Z0-9_]

\W

[^a-zA-Z0-9_]

|

匹配或正则表达式或,分组功能

()

分组

\s

代表空格

\s

在java中会自动判断开始和结尾。

使用正则表达式,将字符串中的数字转换为空。

String str = "hello16java16mysql8html";
        System.out.println(str);
        //删除所有数字   \\d 代表数字   \\D 代表非数字(\\d取反)
        String s1 = str.replaceAll("\\d", "");
        System.out.println(s1);

运算结果如下

java 替换 正则表达式 java replace 正则表达式_字符串

使用正则表达式,删除不是数字的内容。

String str = "hello16java16mysql8html";
        System.out.println(str);
        //删除不是数字的内容
        String s1 = str.replaceAll("\\D", "");
        System.out.println(s1);

运算结果如下

java 替换 正则表达式 java replace 正则表达式_正则表达式_02

删除首次出现的字符串匹配删除,+表示{1,}首次出现数字,无论几个都可以删除。

String str = "hello16java16mysql8html";
        System.out.println(str);
        //删除首次出现的字符串匹配删除 \\d+
        String s1 = str.replaceFirst("\\d+", "");
        System.out.println(s1);

java 替换 正则表达式 java replace 正则表达式_字符串_03

判断字符串有没有大写

String str = "hello16java16mysql8html";
        String str1 = "helGlo16jaAva16mysql8html";
        System.out.println(str);
        if (str.matches("^.*[A-Z].*$")) {
            System.out.println("有大写");
        } else {
            System.out.println("没大写");
        }


        System.out.println(str1);
        if (str1.matches("^.*[A-Z].*$")) {
            System.out.println("有大写");
        } else {
            System.out.println("没大写");
        }

java 替换 正则表达式 java replace 正则表达式_字符串_04

判断字符串有没有数字

String str = "hello16java16mysql8html";
        System.out.println(str);
        System.out.println(str.matches("^.*\\d.*$"));

java 替换 正则表达式 java replace 正则表达式_正则表达式_05

判断字符串有没有大小写字母

String str = "hello16java16mysql8html";
        System.out.println(str);
        System.out.println(str.matches("^.*\\w.*$"));

java 替换 正则表达式 java replace 正则表达式_正则表达式_06

判断字符串有没有中文

中文字符串的范围

java 替换 正则表达式 java replace 正则表达式_学习_07

String str = "hello16java16mysql8html";
        System.out.println(str);
        System.out.println(str.matches("^.*[\u4e00-\u9fa5].*$"));

java 替换 正则表达式 java replace 正则表达式_学习_08

判断电话号码

String phone = "13014577066";
        String pattern = "^1[3,5,8]\\d{9}$";
        if (phone.matches(pattern)) {
            System.out.println("yes");
        } else {
            System.out.printf("手机号:%s不是合法的手机号。 \n", phone);
        }

java 替换 正则表达式 java replace 正则表达式_字符串_09

//是不是全英文
System.out.println("abc".matches("[a-zA-Z]+"));//true
System.out.println("ab c".matches("[a-zA-Z]+"));//false
System.out.println("ab123c".matches("[a-zA-Z]+"));//false
System.out.println("abDDDc".matches("[a-zA-Z]{1,}"));//true

贪婪模式

String h = "<div>hello-17</div><div>hello</div><span>java</span><div>java</div>";
        System.out.println(h);
        Pattern p = Pattern.compile("(<div>)(.*?hello.*?)(</div>)");
        Matcher m = p.matcher(h);
        while (m.find()) {
            System.out.println(m.group(2));
        }

java 替换 正则表达式 java replace 正则表达式_学习_10

加上?代表取消贪婪模式如不取消会以最大的长度进行计算。

String h = "<div>hello-17</div><div>hello</div><span>java</span><div>java</div>";
        System.out.println(h);
        Pattern p = Pattern.compile("(<div>)(.*hello.*)(</div>)");
        Matcher m = p.matcher(h);
        while (m.find()) {
            System.out.println(m.group(2));
        }

java 替换 正则表达式 java replace 正则表达式_java_11

判断一个字符在字符串中出现的位置

String s = "java-ajavajavajavabc-mysqljavascript-aajava 16ajav";
        String d = "java";
        Pattern p = Pattern.compile("java");
        Matcher m = p.matcher(s);
        int nn = 0;
        while (m.find()) {
            ++nn;
            //System.out.printf("%s ", m.group());
        }
        System.out.printf("%s 在 %s 中出现了 %d 次。%n", d, s, nn);

        int n = s.split("java").length > 0 ? s.split("java").length - 1 : 0;
        if (s.endsWith("java")) {
            n += 1;
        }
        System.out.println(n);

java 替换 正则表达式 java replace 正则表达式_正则表达式_12