求正则表达式 只匹配XXX_MM= 或 XXX_MM中的_MM不匹配XXX_MME 需要将文中的“_MM”替换成“_SM”,文中的XXX_MM 、XXX_MM、XXX_MM=XXX都需要替换,但不替换_MME中的_MM 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 只替换出现的指定字符串 * * @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; }自己再加些具体判断条件 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| 需求不明确,无从回复!不要以为说明白了,再仔细看一下楼主文字,需要将文中的“_MM”替换成“_SM”,文中的XXX_MM 、XXX_MM、XXX_MM=XXX都需要替换请问:文中的 XXX_MM 后面一般都是一些什么?除了是“=”之外,不会有是空的?不可能出现诸如“XXX_MMX”、“XXX_MX,”、“AXXX_MX”、“XXX_MXXXX_MX”之类的? 大牛好凶~是这样的:当XXX_MM后面是空格、等号或者换行符时,将其中的“_SM”替换成“_MM”。当XXX_MM后面是其它时,就不替换了。 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")); } replaceAll("(?<=(XXX))(_MM)(?=[^E])", "_SM") 字符串转化 关于写一个J2SE小项目的问题,帮帮忙!先谢谢各位了 Java 生成pdf 希望高手指教 怎样浏览文件并获取其路径信息作为句柄 如何设置并查看java中JVM堆(heap)的大小? 请各位大哥帮小弟一个忙 关于JAVA初学的问题,兄弟在此谢过 请问 如何用 JBuild 生成 windows 下的可执行文件? java新人问大神引用问题。 使用File对象的createNewFile方法创建文件文件名乱码 关于ImageIO读取图片的问题
* 只替换出现的指定字符串
*
* @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;
}
自己再加些具体判断条件
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|
不要以为说明白了,再仔细看一下楼主文字,需要将文中的“_MM”替换成“_SM”,文中的XXX_MM 、XXX_MM、XXX_MM=XXX都需要替换请问:文中的 XXX_MM 后面一般都是一些什么?除了是“=”之外,不会有是空的?不可能出现诸如“XXX_MMX”、“XXX_MX,”、“AXXX_MX”、“XXX_MXXXX_MX”之类的?
是这样的:
当XXX_MM后面是空格、等号或者换行符时,将其中的“_SM”替换成“_MM”。
当XXX_MM后面是其它时,就不替换了。
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"));
}