java - 基于搜索字符串插入文本的字符串正则表达式

标签 java regex string stringbuilder

我有以下类(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/

相关文章:

java - 需要正则表达式来匹配多行源中的单词

java - Raspberry Pi 和 javaFX 命令错误

regex - 流口水的正则表达式

python重新反向引用重复元素

c++ - strlen 函数总是返回 0

java - 启用 JLabel 闪烁 3 次,然后保持不可见/消失

java - 在反编译的混淆匿名内部类中找不到 "this.b.a.q()"方法

正则表达式 - 匹配最短的可能数量似乎不起作用

c++ - 通过套接字发送和接收 std::string

php - REGEX - PHP 仅获取字符串中的粗体部分