当前位置: 首页 > news >正文

正则表达式

当我们需要对字符串进行判断的时候,使用正则表达式能大大提高编程效率。比如,当我们需要找出所有“像邮箱”的字符串(包含"@" "." ".com",且顺序一致),我们需要一个某种模式的工具,这个时候正则表达式就派上用场了。下面让我们来详细了解一下:

定义:

正则表达式 (regular expression) 又称正规表达式、常规表达式,是对字符串操作的一种逻辑公式。

就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

其中包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。通过正则表达式,我们可以用来搜索、编辑或处理文本。虽然繁琐,但功能强大,能很好的提高效率。

特点:

1. 灵活性、逻辑性和功能性非常强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

3. 对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

语法及说明

使用方法

java.util.regex 包主要包括以下三个类:

  • Pattern 类:

pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

  • Matcher 类:

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

  • PatternSyntaxException:

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

代码格式如下:

// 创建patten对象
Pattern p = Pattern.compile("^this\\s+is\\s+text");// 创建matcher对象
Matcher m = p.matcher(str);// 调用matcher对象m的matches方法
return m.matches();

既然正则表达式是用来判断字符串是否满足要求的一种工具,那么在String类里有没有对应的方法可以直接调用呢?盲生,你发现了华点!

在java中我们可以直接调用String类的matches()方法进行判定字符串是否满足正则条件。大大节省了我们需要记忆的内容,实际使用效果如下:

注意:正则表达式中的"()"小括号与java运算时使用的表达式不一样,进行分组的时候注意分组的范围,否则会出错。

// 设置1-120的数字
System.out.println("119".matches("(120)|(1[0,1]\\d)|([1-9]\\d)|(\\d)"));// 简化后代码如下:
System.out.println("119".matches("(120|1[0,1]|[1-9])?\\d"));

http://www.lryc.cn/news/17043.html

相关文章:

  • java进阶Map 集合
  • Java 方法超详细整理,适合新手入门
  • 软考学习笔记(题目知识记录)
  • 2021.3.3idea创建Maven项目
  • ASP.NET MVC | 创建应用程序
  • 思科设备命令讲解(超基础)
  • Qt-FFmpeg开发-保存视频流裸流(11)
  • Zebec官方辟谣“我们与Protradex没有任何关系”
  • BMS电池管理系统中的各种算法介绍
  • stack Overflow 的使用
  • Vue 在for循环中动态添加类名及style样式集合
  • Maven的优势
  • uboot,内核,根文件系统的作用
  • Vue3通透教程【四】Vue3组合API初体验
  • coco数据集训练nanodet详细流程
  • 关于Kubernetes不兼容Docker
  • MySql_基础篇_从下载mysq到数据库操作
  • 当我尝试问了chatGPT几个问题之后,我感到了危机......
  • 如何生成全局唯一ID
  • 基于node vue的电商系统 mongodb express框架
  • 【03-JVM面试专题-JVM中你知道的类加载器有哪些?作用是什么?分别用来加载什么文件?什么内容的呢?】
  • 面试纪要FFFFF
  • gma 1.1.3 (2023.02.22) 更新日志
  • 现有安全技术
  • Qt QMAKE_MSC_VER
  • 如何通俗地理解原码、反码和补码
  • 在vite vue3 前端架构中,切换环境,切换项目的架构设计方案
  • 华为OD机试真题Python实现【跳格子】真题+解题思路+代码(20222023)
  • Python 入门之文件和异常处理
  • 操作系统作业