Java的正则表达式

简介: 这个系列其实没有多少可说的内容了,不过生活总是要继续的,所以一周工作下来,有摸鱼也有忙碌,当然也有一些感慨和思考。

前言

在使用Java开发时,可以通过使用特殊符号,让一个正则表达式能够匹配多种符合要求的字符串。正则匹配对字符串而言,是十分好用的工具,比如在对键盘输入的控制,输入密码时对字符的要求限制,以及一些查找的需求与替换的使用。

正则匹配

Java中的使用要求

在java.util.regex 包中,主要有以下三个类:

  • Pattern 类

正则表达式的编译表示。

没有公共构造方法,必须首先调用其公共静态编译方法获得 Pattern 对象。

  • Matcher 类

对输入字符串进行解释和匹配操作的引擎

没有公共构造方法,需要调用 Pattern 对象的 matcher 方法获得 Matcher 对象。

  • PatternSyntaxException 类

非强制异常类,表示正则表达式模式中的语法错误。

例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches {
    public static void main( String args[] ) {
        Pattern p = Pattern.compile("abc");        // 编译正则表达式
        Matcher matcher = p.matcher("abcdefg");    // 放入字符串中匹配
        System.out.println(matcher.lookingAt());   // 是否存在子串匹配 true
        System.out.println(matcher.matches());     // 是否完全匹配 false
    }
}

具体使用方法以及其组成意义

表意符号

  • . 表示任意字符

在 Java 中,正则表达式编译是需要再经过一次转义的。因此 \ 才是表示插入一个正则表达式的反斜杠

  • \d 表示一位数字
  • \\ 表示一个反斜杠

字符集

  • x|y 表示匹配 x 或 y
  • [abc] 表示匹配括号中任意单个字符
  • [^abc] 表示匹配除括号中的任意单个字符
  • [a-zA-Z] 表示匹配任意单个字母
  • [a-z&&[^def]] 表示除了 def 外的任意单个字母

字符串匹配

通过 ?*+ 符号,就可以对指定类型的字符串进行匹配。 如下表格展示了不同模式的不同写法:

贪婪模式 饥饿模式 独占模式 结果
X? X?? X?+ 匹配0或1次
X* X*? X*+ 匹配0次或多次
X+ X+? X++ 匹配1次或多次
X{n} X{n}? X{n}+ 匹配n次
X{m,n} X{m,n}? X{m,n}+ 匹配m-n次

因为在匹配一些字符串时,同一个正则表达式可能会在其中匹配到多种结果,所以Java有以下三种模式让我们自由选择:

  • 贪婪模式 (默认)尽可能匹配长字符串。
  • 饥饿模式 (?)尽可能匹配短字符串。
  • 独占模式 (+)尽可能匹配长字符串,不成功会结束匹配而不回溯。

总结

正则表达式只要用熟练,还是非常好用的,把这些知识点记录下来,多看个几遍,相信自己以后可以很好的运用它们,而不是直接查询表才知道该怎么限制字符串。

相关文章
|
2月前
|
Java 程序员
Java 异常处理与正则表达式详解,实例演练及最佳实践
在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。 当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。 try...catch 语句 try 语句允许您定义一段代码块,并在其中测试是否发生错误。 catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。 try 和 catch 关键字成对使用,语法如下:
47 0
|
5月前
|
数据采集 Java 数据格式
【Java】正则表达式,校验数据格式的合法性。
【Java】正则表达式,校验数据格式的合法性。
62 0
|
1月前
|
XML 数据可视化 前端开发
java正则表达式
java正则表达式
C4.
|
2月前
|
Java 程序员
Java的正则表达式
Java的正则表达式
C4.
14 0
|
15天前
|
Java 测试技术 程序员
滚雪球学Java(21):Java正则表达式
【4月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
18 2
滚雪球学Java(21):Java正则表达式
|
17天前
|
Java 编译器 索引
Java 正则表达式
4月更文挑战第18天
|
1月前
|
XML 前端开发 Java
java常用正则表达式
java常用正则表达式
|
2月前
|
数据采集 Java
JAVA正则表达式
JAVA正则表达式
14 1
|
2月前
|
Java
Java的正则表达式结构
Java的正则表达式结构
9 0
|
2月前
|
机器学习/深度学习 Java 索引
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
39、一篇文章弄懂 Java 正则表达式中的量词、贪婪、勉强、独占和 String 的 matches 方法的底层【个人感觉非常值得学习】
32 0