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());
}
}
尝试一下
上面的代码生成以下结果。