java matcher方法_Java正则表达式查找/替换

ecda9ccdaf37064e26d524250476461c.png

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

在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.

要找到所有数字,我们可以使用 bd+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()); }}

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

ac78811e16e574dfc1f8c3dff0b7bceb.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值