我有以下类(class)。
public class TestStringRegex {
public static void main(String[] args) {
StringBuilder text = new StringBuilder("KALAKA");
String wordToFind = "KA";
Pattern word = Pattern.compile(wordToFind);
Matcher match = word.matcher(text);
while (match.find()) {
System.out.println(match.end());
text=text.insert(match.end(),"INSERT");
}
System.out.println(text);
}
预期输出为 KAINSERTLAKAINSERT。 但得到 KAINSERTLAKA。 匹配器/插入是否适用于输入文本的长度?如何获得所需的输出。
最佳答案
如果您想使用 matcher
来执行此操作,请使用 int
的重载方法,即 matcher.find(index)
。由于某种原因,mathcher.find() 无法按照文档中给出的方式工作。如果您好奇,您需要调试代码。
就像下面这样说
int end = 0;
while (match.find(end)) {
end = match.end();
System.out.println(end);
text=text.insert(end,"INSERT");
}
更好的方法是这样做
public static void main(String[] args) {
System.out.println("KALAKA".replaceAll("KA", "$0INSERT"));
}
这就是您需要编写的所有代码。
关于java - 基于搜索字符串插入文本的字符串正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44644319/