Java 正则表达式学习总结和一些小例子

Java 正则表达式学习总结和一些小例子

正则表达式是用于字符串匹配和替换的一种表达式语言。Java 中使用 java.util.regex 包来实现正则表达式。这篇文章将会总结 Java 正则表达式的常见语法和使用方法,并且提供一些示例代码来说明这些概念。

Java 正则表达式语法

Java 正则表达式的语法相对复杂,但它也为我们提供了强大的功能和灵活性。下面是一些 Java 正则表达式语法的基本知识:

字符类

字符类是正则表达式语法中用于匹配单个字符的元素。它们使用一对方括号 [ ] 来表示,里面包含了可以被匹配的字符。例如,正则表达式 [abc] 会匹配单个字符 abc。也可以使用范围来匹配一段字符,例如 [a-c] 会匹配字符 ac

量词

量词是正则表达式语法中用于限定匹配字符数量的元素。它们可以被用于单个字符、字符类或分组中。下面是一些常用的量词:

  • * - 匹配0个或多个字符。
  • + - 匹配1个或多个字符。
  • ? - 匹配0个或1个字符。
  • {n} - 匹配恰好 n 个字符。
  • {n,} - 匹配至少 n 个字符。
  • {n,m} - 匹配至少 n 个字符但不超过 m 个字符。

分组

分组是正则表达式语法中用于将一系列字符组合在一起的元素,以便对它们进行量词操作或进行后续的分组操作。它们使用一对圆括号 ( ) 来表示,里面包含了需要分组的字符。例如,正则表达式 (ab)+ 会匹配一个或多个连续的 ab

边界

边界是正则表达式语法中用于匹配文本字符的位置而不是字符本身的元素。它们可以被用于匹配诸如开始和结束符号之类的特殊字符。下面是一些常用的边界:

  • ^ - 匹配一行的开始。
  • $ - 匹配一行的结束。
  • \b - 匹配词的开头或结尾。
  • \B - 匹配不在词的开头或结尾的位置。

Java 正则表达式的使用方法

为了使用正则表达式,我们需要先构造一个模式(pattern)对象,然后使用它来创建一个匹配器(matcher)对象。这个匹配器可以被用于在字符串中查找或替换符合模式的子串。

下面是一个例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        String text = "Java is a popular programming language.";
        Pattern pattern = Pattern.compile("Java");

        Matcher matcher = pattern.matcher(text);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("Count of 'Java' in text: " + count);
    }
}

在这个例子中,我们首先定义了一个字符串和一个正则表达式模式。然后我们构造了一个 Pattern 对象并使用该对象来创建一个 Matcher 对象。接下来我们使用 while 循环来在字符串中查找所有符合模式的子串,并在每次匹配时,增加计数器的计数。最后,我们输出了匹配到的次数。

输出结果:Count of 'Java' in text: 1

Java 正则表达式的小例子

我们可以看到,正则表达式在 Java 编程中是一个非常有用的工具。下面是两个小例子来说明正则表达式的应用:

邮箱地址验证

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailExample {
    public static void main(String[] args) {
        String email = "example@example.com";
        String regex = "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$";
        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(email);
        if(matcher.matches()) {
            System.out.println("Valid email address.");
        } else {
            System.out.println("Invalid email address.");
        }
    }
}

在这个例子中,我们定义了一个要验证的电子邮件地址和一个有效的电子邮件地址的正则表达式模式。然后我们使用 Pattern 和 Matcher 对象来匹配电子邮件地址。如果地址符合模式,我们输出“Valid email address.”,否则,我们输出“Invalid email address.”。

替换子串

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReplaceExample {
    public static void main(String[] args) {
        String text = "I have a cat, but I like dogs too.";
        String regex = "\\bcat\\b";
        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(text);
        String newText = matcher.replaceAll("bird");
        System.out.println(newText);
    }
}

在这个例子中,我们定义了一个字符串,其中包含了一个要被替换的子串。然后我们定义了一个正则表达式模式,它将匹配子串的边界。我们使用 Matcher 和 Pattern 对象来匹配字符串,并使用 replaceAll() 方法将子串替换为“bird”。最后,我们输出了替换后的结果。

输出结果: I have a bird, but I like dogs too.

总结

Java 正则表达式是编程中非常重要的一个概念。本文涵盖了 Java 正则表达式语法的基本知识以及使用方法,同时提供了两个小例子来说明正则表达式在实际编程中的应用。如果你希望深入学习正则表达式的话,可以上网搜索一些相关资料来进行学习。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 正则表达式学习总结和一些小例子 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • javascript FormatNumber函数实现方法

    下面是关于 JavaScript 实现 FormatNumber 函数的攻略。 1. 什么是 FormatNumber 函数? FormatNumber 函数可以将数字格式化为带有千位分隔符(千分位)的字符串形式,方便数据的可视化和阅读。例如将数字 10000 格式化为 10,000。 2. 实现 FormatNumber 函数的方法 要实现 FormatN…

    JavaScript 2023年5月27日
    00
  • javascript之嵌套函数使用方法

    下面我来详细讲解一下“JavaScript之嵌套函数使用方法”的完整攻略。 什么是嵌套函数 嵌套函数是一种定义在另一个函数内部的函数,可以在外部函数范围内使用。嵌套函数有时候也称为内部函数、嵌套函数、局部函数或私有函数。 以下是一个简单的嵌套函数示例: function outerFunction() { console.log("这是外部函数&q…

    JavaScript 2023年5月27日
    00
  • 原生js实现倒计时功能(多种格式调用)

    下面是关于原生JavaScript实现倒计时功能的攻略,包含了多种格式的调用方式: 前置知识 在学习原生JavaScript实现倒计时功能前,需要掌握HTML、CSS、和基本的JavaScript语法知识。 原生JavaScript实现倒计时功能 HTML 首先,我们需要在HTML文件中创建一个具有倒计时功能的元素,例如一个 div 元素: <div …

    JavaScript 2023年5月27日
    00
  • JS中取二维数组中最大值的方法汇总

    当我们需要在 JavaScript 中取二维数组中的最大值时,可能会遇到一些问题。下面我为大家详细讲解 JS 中取二维数组中最大值的方法汇总。 方法一:使用双重循环 这种方法比较直观,可以使用双重循环遍历整个二维数组,然后找到其中最大值。 function findMaxIn2DArray(arr) { let max = arr[0][0]; for (l…

    JavaScript 2023年5月27日
    00
  • 一篇搞懂Vue2、Vue3响应式源码的原理

    “一篇搞懂Vue2、Vue3响应式源码的原理”攻略 背景 在学习Vue.js框架时,Vue的响应式系统是一个至关重要的概念,它支持Vue的组件可以动态地响应数据的变化,而不需要手动去修改DOM。 Vue的响应式系统在Vue2和Vue3中有所不同,因此本文将深入讲解Vue2和Vue3中响应式系统的工作原理,以及如何手动实现一个简单的响应式系统。 Vue2中的响…

    JavaScript 2023年6月11日
    00
  • 编写高质量JavaScript代码的基本要点

    编写高质量JavaScript代码的基本要点有以下几点: 1. 规范代码格式 良好的代码格式不仅可以使代码更容易阅读和理解,还可以提高代码的可维护性和可重用性。为此,我们需要遵循一些规范,如: 使用一致的缩进方式和空格或制表符 使用行末注释而不是行内注释 使用严格模式,避免使用全局变量 具有良好的代码结构,如按功能或逻辑分组功能块 以下是一个示例代码块,展示…

    JavaScript 2023年5月18日
    00
  • vue-element的select下拉框赋值实例

    下面是针对vue-element的select下拉框赋值实例的详细攻略: 1. 安装vue-element-ui 首先,在vue项目中安装vue-element-ui库。可以运行以下命令来安装: npm install element-ui -S 接着,在main.js文件中引入并使用vue-element-ui插件: import Vue from ‘vu…

    JavaScript 2023年6月10日
    00
  • Single-spa 源码浅析

    引言 前一段时间, 正好在做微前端的接入和微前端管理平台的相关事项。 而我们当前使用的微前端框架则是 qiankun, 他是这样介绍自己的: qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 所以本文基于 single-spa 源码, 来介绍 single-spa 当前使用版本 5…

    JavaScript 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部