Java 不区分大小写的搜索和替换

Java 不区分大小写的搜索和替换,java,regex,string,search,replace,Java,Regex,String,Search,Replace,我有以下字符串,如何在Java中搜索和替换它 之前 *animal is a *ANImal and *Bird is a *bIrd. 搜索和替换后,应为*动物=狗,*鸟=孔雀 我已经尝试过用这种模式替换发生的事件-(?I)\\\*动物,但它不起作用。我做错了什么?是的,这可能会解决所述的这个特定问题,但它会挫败试图为特定案例找到通用解决方案的目的,这总是比找到只解决一个案例的特定解决方案更可取。拿起一本关于设计模式的好书,读一读,它会非常值得;-)如果你在给出毫无意义的评论之前仔细考虑一下

我有以下字符串,如何在Java中搜索和替换它

之前

*animal is a *ANImal and *Bird is a *bIrd.
搜索和替换后,应为*动物=狗,*鸟=孔雀


我已经尝试过用这种模式替换发生的事件-(?I)\\\*动物,但它不起作用。我做错了什么?

是的,这可能会解决所述的这个特定问题,但它会挫败试图为特定案例找到通用解决方案的目的,这总是比找到只解决一个案例的特定解决方案更可取。拿起一本关于设计模式的好书,读一读,它会非常值得;-)如果你在给出毫无意义的评论之前仔细考虑一下,这个想法是可以推广的。。。我们的想法是将句子分割(如何分割取决于输入和文本格式)并替换单个单词,以匹配特定的模式。如果您认为该评论毫无意义,我很抱歉——它是建设性的,而不是屈尊俯就的。对不起,也许我可以说得更清楚些。要点是,虽然这种方法是有效的,但一种不需要硬编码字符串且通用的解决方案将对更多人有所帮助。毕竟,模式是关于不要重新发明轮子,而是关于重新使用可应用于一系列其他类似问题的方法。我同意这一点,但上面的解决方案本身有一个模式,只需1分钟。提取硬编码部分并使其通用。。。我想说的是,它更多的是一种算法方法,而不是一种设计模式,您可以从多个方向来解决它-替换、正则表达式、StringUtils。。。例如:str.replaceAll((?i)“+Pattern.quote(“*animal”),“Dog”)与“*bird”相同
   public String replaceStrPattern(String str, String pattern, String replaceWith) {

            String newStr = str;
            String nonAlphaNumeric = "[^a-zA-Z0-9]";

    String[] words = str.split(" ");
    for(String word : words) {
               word = word.replaceAll(nonAlphaNumeric, "").trim();
        if(word.equalsIgnoreCase(pattern))
            newStr = newStr.replace(word, replaceWith);
    }

        return newStr;      
}
   public String replaceStrPattern(String str, String pattern, String replaceWith) {

            String newStr = str;
            String nonAlphaNumeric = "[^a-zA-Z0-9]";

    String[] words = str.split(" ");
    for(String word : words) {
               word = word.replaceAll(nonAlphaNumeric, "").trim();
        if(word.equalsIgnoreCase(pattern))
            newStr = newStr.replace(word, replaceWith);
    }

        return newStr;      
}