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有以下三种模式让我们自由选择:

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

总结

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

相关文章
|
1月前
|
监控 Java Python
Java 中的正则表达式
正则表达式是Java中强大的文本处理工具,支持灵活的匹配、搜索、替换和验证功能。本文介绍了正则表达式的语法基础及其在Java中的应用,包括字符串匹配、替换、分割及实际场景中的邮箱验证和电话号码提取等示例。通过这些技术,可以显著提高文本处理的效率和准确性。
123 8
|
3月前
|
移动开发 Java Windows
Java 匹配\r 和 \n 的正则表达式如何编写
【10月更文挑战第19天】Java 匹配\r 和 \n 的正则表达式如何编写
207 3
|
6月前
|
Java Perl
Java进阶之正则表达式
【7月更文挑战第17天】正则表达式(RegEx)是一种模式匹配工具,用于在字符串中执行搜索、替换等操作。它由普通字符和特殊元字符组成,后者定义匹配规则。
42 4
|
5月前
|
监控 Java API
|
6月前
|
数据采集 监控 Java
day21:Java零基础 - 正则表达式
【7月更文挑战第21天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
40 1
|
6月前
|
Java
如何在Java中使用正则表达式
如何在Java中使用正则表达式
|
6月前
|
Java
如何使用Java中的正则表达式
如何使用Java中的正则表达式
|
7月前
|
Java Perl
java 正则表达式
java 正则表达式
43 2
|
6月前
|
Java
正则表达式在Java中的应用与实例
正则表达式在Java中的应用与实例