应package com.yangxiutian.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* stop字母任意组合的正则表达式 \b(?i)[s|t|o|p]{4}\b
*/
public class Test
{
public static void main(String[] args)
{
//System.out.println("sTop".matches("(?i)[s|t|o|p]{4}"));
// STRING STR = "ABC";
// SYstem.out.println(str.toUpperCase());
StringBuffer sb = new StringBuffer(
"select * from ims_business where u_operation_name like '%pi%' or u_description like '%ff%' or u_description like '%ff%'");
Pattern p = Pattern.compile("\\s+like");//追加后括号
Matcher m = p.matcher(sb);
while (m.find())
{
System.out.println(m.start());
sb.insert(m.start(), ")");
}
System.out.println(sb);
p = Pattern.compile("\\S+\\s+like");//追加前括号
m = p.matcher(sb);
while (m.find())
{
System.out.println(m.start());
sb.insert(m.start(), "|^_^|");//由于括号会影响,所以先替换成"|^_^|"再将"|^_^|"替换成"upper("
}
String s = sb.toString().replace("|^_^|", "upper(");
System.out.println(s);
}
}
该有三个"like"可是第二遍找的时候为什么只有两个