第二百零六节 Java正则表达式教程 - Java 正则表达式查找/替换

ops/2024/9/25 23:24:03/

Java正则表达式教程 - Java正则表达式查找/替换

我们可以找到一个模式,并用一些文本替换,替换的文本取决于匹配的文本。

在Java中,我们可以在Matcher类中使用以下两个方法来完成这个任务。

Matcher appendReplacement(StringBuffer sb, String replacement)
StringBuffer appendTail(StringBuffer sb)

例子

假设我们有以下文本。

We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.

我们想在以下规则中将数字更改为文本。

  • 如果多于5,更换多
  • 如果小于5,请更换少量
  • 如果是1,替换为“只有一个”

更换后,上面的句子是

We have many tutorials for Java, a few tutorials for Javascript and only one tutorial for Oracle.

要找到所有数字,我们可以使用 \b\d+\b \b 标记单词边界。

以下代码显示如何使用正则表达式和appendReplacement()和appendTail()方法

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String regex = "\\d+";StringBuffer sb = new StringBuffer();String replacementText = "";String matchedText = "";String text = "We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(text);while (m.find()) {matchedText = m.group();int num = Integer.parseInt(matchedText);if (num == 1) {replacementText = "only one";} else if (num < 5) {replacementText = "a few";} else {replacementText = "many";}m.appendReplacement(sb, replacementText);}m.appendTail(sb);System.out.println("Old  Text: " + text);System.out.println("New Text: " + sb.toString());}
}

尝试一下

上面的代码生成以下结果。


 


http://www.ppmy.cn/ops/97923.html

相关文章

Vue2中 A页面调用B页面函数

1&#xff0c;创建util.js文件在utils文件夹中 import Vue from vue export default new Vue 2&#xff0c;A&#xff0c;B页面均引入 import Utils from ../../utils/util.js 3&#xff0c;A页面&#xff08;调用方&#xff09;想在哪调用写在哪就行。 Utils.$emit(&quo…

8.21面试复盘

读写锁和互斥锁 1. 概念 互斥锁&#xff08;Mutex&#xff09; 互斥锁是一种用于确保同一时间只有一个线程能够访问共享资源的同步机制。其基本作用是保护临界区&#xff0c;避免多个线程同时进入导致数据竞态和不一致性的问题。 读写锁&#xff08;Read-Write Lock&#x…

轮换IP与固定IP,如何抉择?

IP地址相信大家都知道&#xff0c;它是标识我们网络身份的重要凭证。从访问网站到数据抓取&#xff0c;都能看到IP地址的身影。那么&#xff0c;轮换IP和固定IP该怎么理解呢&#xff1f;本文将详细介绍这两种IP类型&#xff0c;旨在帮助你根据需求做出合适的选择。 什么是固定I…

Oracle从入门到项目实践

第3章 熟悉Oracle数据库体系结构 3.2逻辑存储结构 逻辑存储结构主要由数据块、数据区、数据段、表空间等组成。 1.表空间是数据库中最大的逻辑划分区域&#xff0c;通常用来存放数据表、索引、回滚段等数据对象&#xff0c;任何数据对象在创建时必须指定存储在某个表空间中。…

rust操作rabbitmq

Rust 操作 Rabbitmq 使用docker快速部署rabbitmq docker pull rabbitmq:management # 15672为rabbitmq 管理员端口&#xff0c;默认账号密码为guest(账号密码相同) docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:managementrust 添加amqp库lapin car…

井盖异动传感器:为城市安全加码

城市的地下管网错综复杂&#xff0c;井盖作为连接地面与地下的重要通道&#xff0c;其安全性至关重要。然而&#xff0c;由于各种原因导致的井盖丢失或损坏事件时有发生&#xff0c;给行人和车辆带来了极大的安全隐患。 一、智能科技&#xff0c;守护脚下安全 旭华智能井盖异…

C++ TinyWebServer项目总结(8. 高性能服务器程序框架)

《Linux 高性能服务器编程》一书中&#xff0c;把这一章节作为全书的核心&#xff0c;同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后&#xff0c;正式进入了 Web 服务器项目的核心部分&#xff01; 前置内容回顾&#xff1a; 1. C TinyWebServer项目总结&…

Unity XR Interaction Toolkit 通过两个手柄控制物体放大缩小

1&#xff1a;给物体添加 XR General Grab Transformer 脚本 2&#xff1a;XR Grab Interactable 的 select mode 选择 Multiple