栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java正则表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java正则表达式

正则表达式

目录

正则表达式

一,什么是正则表达式?

什么是正则表达式?

正则表达式的用途:

重要声明

怎么认识正则表达式

Java对正则表达式的支持

Pattern类使用示例

1.共享模式

2.独立模式

String类的方法使用示例

正则规则

1.字符类

2.预定义字符类

3.边界匹配器

4.Greedy 数量词

5.Logical运算符

6.反斜线、转义和引用


一,什么是正则表达式?

什么是正则表达式?

正则表达式(Regular expression)就是一个字符构成的

串,它定义了一个用来搜索匹配字符串的模式。

正则表达式的用途:

验证字符串是否合法 查找指定格式的字符串 替换指定格式的字符串 提取符合指定格式的字符串

重要声明

正则表达式是一个独立的模式匹配规则,有自己的格式与语义规定。现今很多语言都支持正则表达式处理文本,如Java, C#, Javascript, PHP, Perl, Python等。 不同的语言对正则表达式的支持方式可能不同,所支持语法细节规则也可能不同,在使用时请根据特定的语言去使用正则表达式。

怎么认识正则表达式

使用Java正则表达式编程与传统编程相比: 优点: 简化代码编写,提高处理效率 在判断Email,IP等格式时,使用传统的对字符串比较的方式,可能需要几十行代码,而使用正则表达式,则只需要几行就能解决问题。 缺点: 需要单独学习Java正则表达式 写出来的程序不易理解,可读性不好

Java对正则表达式的支持

Java中对正则表达式的使用: 独立使用:Java在提供了java.util.regex.Pattern类和java.util.regex.Matcher类支持正则表达式的使用 结合String类使用,涉及的方法有: matches replaceAll split

Pattern类使用示例

1.共享模式
//将给定的正则表达式编译为模式。
        Pattern p = Pattern.compile("[a-z]{6,8}");
        //创建一个匹配器,匹配给定的输入
        Matcher m = p.matcher("asdasd");//6~8个字母组成
        //尝试将整个区域与模式进行匹配。
        boolean b = m.matches();
        System.out.println(b);

2.独立模式
boolean flag=Pattern.matches("[a-z]{6,8}","asdasd");
        System.out.println(flag);

String类的方法使用示例

String类的几个方法(matches, replaceAll, split)可以直接传入正则表达式,如下

public boolean matches(String regex)告诉这个字符串是否匹配给定的regular expression 。 
这种形式为str .matches( regex )方法的)产生与表达式完全相同的结果 
​
Pattern. matches(regex, str) 
参数 
regex - 要匹配此字符串的正则表达式 
结果 
true如果,并且只有这个字符串与给定的正则表达式匹配 
异常 
PatternSyntaxException - 如果正则表达式的语法无效 
String pwd="asdfgh";
        boolean flags=pwd.matches("[a-z]{6,8}");
        System.out.println(flags);

正则规则

1.字符类

 

一个[]只能代表一个字符

package com.sk.test;
​

public class Dome01 {
    public static void main(String[] args) {
        //[abc] a、b 或 c(简单类)
        System.out.println("c".matches("[abc]"));
        System.out.println("55".matches("[235]"));
        System.out.println("55".matches("[1234566789][0123456789]"));
//[^abc] 任何字符,除了 a、b 或 c(否定)
        System.out.println("a".matches("[^abc]"));
//[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
        System.out.println("".matches("[a-z]"));//小写字母
        System.out.println("".matches("[A-Z]"));//大写字母
        System.out.println("".matches("[0-9]"));//数字
        System.out.println("".matches("[a-zA-Z]"));//小写字母或大写字母
        System.out.println("".matches("[0-15-82]"));//0-1   5-8    2
        System.out.println("".matches("[3-5][0-9]"));//30-59
​
//[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
        System.out.println("".matches("[0-9[a-z]]"));
        System.out.println("".matches("[0-9a-z]"));
//[a-z&&[def]] d、e 或 f(交集)
        System.out.println("".matches("[a-j&&[c-z]]"));
//[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
        System.out.println("".matches("[a-j&&[^c-z]]"));
//[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
        System.out.println("".matches("[a-j&&[^c-z]]"));
​
    }
}

2.预定义字符类

 

package com.sk.test;
​

public class Dome02 {
    public static void main(String[] args) {
//      预定义字符类
//  . 任何字符(与行结束符可能匹配也可能不匹配)
        System.out.println("".matches("."));
//d 数字:[0-9]
        System.out.println("0".matches("\d"));
//D 非数字: [^0-9]
        System.out.println("0".matches("\D"));
//s 空白字符:[ tnx0Bfr]
        System.out.println("".matches("\s"));
//S 非空白字符:[^s]
        System.out.println("".matches("\S"));
//w 单词字符:[a-zA-Z_0-9]   数字字母下划线
        System.out.println("".matches("\w"));
//W 非单词字符:[^w]
        System.out.println("".matches("\W"));
    }
}
​

3.边界匹配器

 

package com.sk.test;
​

public class Dome03 {
    public static void main(String[] args) {
//      边界匹配器
//              ^ 行的开头
        System.out.println("".matches("^1\d"));
        System.out.println("张三ll".matches("^张.."));
​
//      $ 行的结尾
        System.out.println("".matches("\w\w$"));
        System.out.println("".matches("..丰$"));
        //张X丰
//b 单词边界
//B 非单词边界
//A 输入的开头
//G 上一个匹配的结尾
//Z 输入的结尾,仅用于最后的结束符(如果有的话)
//z 输入的结尾
​
    }
}

4.Greedy 数量词

 

5.Logical运算符

 

6.反斜线、转义和引用

反斜线、转义和引用 反斜线字符 ('') 用于引用转义构造,如上表所定义的,同时还用于引用其他将被解释为非转义构造的字符。因此,表达式 \ 与单个反斜线匹配,而 { 与左括号匹配。 在不表示转义构造的任何字母字符前使用反斜线都是错误的;它们是为将来扩展正则表达式语言保留的。可以在非字母字符前使用反斜线,不管该字符是否非转义构造的一部分。

package com.sk.test;
​

public class Dome05 {
    public static void main(String[] args) {
//      Logical 运算符
//      XY X 后跟 Y
        System.out.println("ab".matches("ab"));
//      X|Y X 或 Y
        System.out.println("男".matches("男|女"));
//      (X) X,作为捕获组  ()中的内容会被当做一个整体
        //1-999
        System.out.println("(\d)|([1-9]\d)|([1-9]\d{2})");
​
        //
        System.out.println("a:\".matches("a:\\"));
        //验证.com的后缀
        System.out.println("a.com".matches(".*\.com"));
        //验证 (
        System.out.println("(".matches("\("));
    }
}
​

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号