只匹配XXX_MM= 或 XXX_MM中的_MM
不匹配XXX_MME 需要将文中的“_MM”替换成“_SM”,文中的XXX_MM 、XXX_MM、XXX_MM=XXX都需要替换,但不替换_MME中的_MM

解决方案 »

  1.   

    /**
         * 只替换出现的指定字符串
         * 
         * @param str
         *            源字符串
         * @param regex
         *            目标字符串
         * @param replacement
         *            替换字符串
         * @return str 返回替换完成的字符串
         */
        public static String replaceString(String str, String regex, String replacement) {
            if (((str == null) || (str.equals(""))) || (regex == null) || (replacement == null)) {
                return "";
            }
            int i = str.indexOf(regex);
            while (i != -1) {
                StringBuffer sBuffer = new StringBuffer(str);
                sBuffer.replace(i, i + regex.length(), replacement);
                str = sBuffer.toString();
                i = str.indexOf(regex, i + replacement.length());
            }
            return str;
        }
    /**
         * 只替换尾部的出现的指定字符串
         * 
         * @param str
         *            源字符串
         * @param regex
         *            目标字符串
         * @param replacement
         *            替换字符串
         * @return str 返回替换完成的字符串
         */
        public static String replaceLastString(String str, String regex, String replacement) {
            String returnStr = "";
            if (((str == null) || (str.equals(""))) || (regex == null) || (replacement == null)) {
                return returnStr;
            }
            StringBuffer sb = new StringBuffer(str);
            int beginIndex = str.indexOf(regex, str.length() - regex.length());
            int endIndex = str.length();
            if (beginIndex > 0) {
                //判断最后有没有需要替换的字符串,如果有,替换后进行递归处理
                sb.replace(beginIndex, endIndex, replacement);
                returnStr = StringUtil.replaceLastString(sb.toString(), regex, replacement);
            } else {
                returnStr = str;
            }
            return returnStr;
        }
    自己再加些具体判断条件
      

  2.   

    public static void main(String[] args){
    String[] str={"XXX_MM ","XXX_MM","XXX_MM=XXX","_MME"};
    for(int i=0;i<str.length;i++){
    System.out.println("|"+str[i]+"|"+"\t|"+str[i].replaceAll("_MM(?!\\w)","_SM")+"|");
    }
    }|XXX_MM | |XXX_SM |
    |XXX_MM| |XXX_SM|
    |XXX_MM=XXX| |XXX_SM=XXX|
    |_MME| |_MME|
      

  3.   

    需求不明确,无从回复!
    不要以为说明白了,再仔细看一下楼主文字,需要将文中的“_MM”替换成“_SM”,文中的XXX_MM 、XXX_MM、XXX_MM=XXX都需要替换请问:文中的 XXX_MM 后面一般都是一些什么?除了是“=”之外,不会有是空的?不可能出现诸如“XXX_MMX”、“XXX_MX,”、“AXXX_MX”、“XXX_MXXXX_MX”之类的?
      

  4.   

    大牛好凶~
    是这样的:
    当XXX_MM后面是空格、等号或者换行符时,将其中的“_SM”替换成“_MM”。
    当XXX_MM后面是其它时,就不替换了。
      

  5.   


    public static void main(String[] args) throws Exception {
    String str = "AA_MM BB_MM=ADF ASDF_MM";
    System.out.println(str.replaceAll("_MM(\\s+|=|$)", "_SM$1"));
    }
      

  6.   

    replaceAll("(?<=(XXX))(_MM)(?=[^E])", "_SM")