问题如下:public void test(){
String str = "I82+I88";
String regex = null;
String replacement = null;
str.replaceAll(regex, replacement);

//希望匹配后的结果,类似下面
str = "[T192.I82]+[T192.I88]";
}
希望熟悉正则表达式替换的大牛,帮忙解决,不胜感激!

解决方案 »

  1.   

    1.Java中在某个字符串中查询某个字符或者某个子字串 Java代码  
    1.String s = "@Shang Hai Hong Qiao Fei Ji Chang";      
    2.String regEx = "a|F"; //表示a或F   
    3.Pattern pat = Pattern.compile(regEx);   
    4.Matcher mat = pat.matcher(s);   
    5.boolean rs = mat.find();   
    String s = "@Shang Hai Hong Qiao Fei Ji Chang";   
    String regEx = "a|F"; //表示a或F
    Pattern pat = Pattern.compile(regEx);
    Matcher mat = pat.matcher(s);
    boolean rs = mat.find();     如果s中有regEx,那么rs为true,否则为flase。    如果想在查找时忽略大小写,则可以写成Pattern pat=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); 2.在某个文件中获取一段字符串Java代码  
    1.String regEx = ".+\(.+)$";   
    2.String s = "c:\test.txt";   
    3.Pattern pat = Pattern.compile(regEx);   
    4.Matcher mat = pat.matcher(s);   
    5.boolean rs = mat.find();   
    6.for(int i=1;i<=mat.groupCount();i++){   
    7.  System.out.println(mat.group(i));   
    8.}   
    String regEx = ".+\(.+)$";
    String s = "c:\test.txt";
    Pattern pat = Pattern.compile(regEx);
    Matcher mat = pat.matcher(s);
    boolean rs = mat.find();
    for(int i=1;i<=mat.groupCount();i++){
      System.out.println(mat.group(i));
    }   以上的执行结果为test.txt,提取的字符串储存在mat.group(i)中,其中i最大值为mat.groupCount(); 3.对字符串的分割Java代码  
    1.String regEx=":";   
    2.Pattern pat = Pattern.compile(regEx);   
    3.String[] rs = pat.split("aa:bb:cc");   
    String regEx=":";
    Pattern pat = Pattern.compile(regEx);
    String[] rs = pat.split("aa:bb:cc");   执行后,r就是{"aa","bb","cc"}    如果用正则表达式分割就如上所示,一般我们都会使用下面更简单的方法:Java代码  
    1.String s = "aa:bb:cc";   
    2.String[] rs=s.split(":");   
    String s = "aa:bb:cc";
    String[] rs=s.split(":");   4.字符串的替换/删除Java代码  
    1.String regEx="@+"; //表示一个或多个@   
    2.Pattern pat=Pattern.compile(regEx);   
    3.Matcher mat=pat.matcher("@@aa@b cc@@");   
    4.String s=mat.replaceAll("#");   
    String regEx="@+"; //表示一个或多个@
    Pattern pat=Pattern.compile(regEx);
    Matcher mat=pat.matcher("@@aa@b cc@@");
    String s=mat.replaceAll("#");  结果为"##aa#b cc##"
      
     如果要把字符串中的@都给删除,只用要空字符串替换就可以了:Java代码  
    1.String s=mat.replaceAll("");  
    String s=mat.replaceAll("");  结果为"aab cc"
      

  2.   

    String regEx="^[A-Z]{1,2}$"; //这是第一个,第二个类似 ,我也是看那篇文章后照着学的。  
    Pattern pat=Pattern.compile(regEx);   
    Matcher mat=pat.matcher("I82+I88");   
    String s=mat.replaceAll("[T192"+mat+"]");   
      

  3.   


    String str = "I82+I88";
    String regex = "([A-Z]{1,2}[1-9]{1,3})";
    String replacement = "[T192\\.$1]";
    System.out.println(str.replaceAll(regex, replacement)); 
    // 希望匹配后的结果,类似下面
    str = "[T192.I82]+[T192.I88]";这样?
      

  4.   


    我这么写:如何改一下
    //满足str的匹配条件,regex和replacement如何写才正确
    String str = "I82+I88";
    String regex = "^[A-Z]{1-2}[0-9]{1-3}$";
    String replacement = "[\0\1]";

    Pattern pat = Pattern.compile(regex); 
    Matcher mat = pat.matcher(str);
    boolean rs = mat.find();  
    if (rs) {
    mat.replaceAll(replacement);
    System.out.println(str);
    }
      

  5.   

    public class Test {
    public static void main(String[] args) {
    String str = "I82+I88";
            String regex = "(I\\d+)";
            String replacement = "[T192.$1]";
            str = str.replaceAll(regex, replacement);
            
            System.out.println(str);
             
            str = "[T192.I82]+[T192.I88]";
    }
    }
      

  6.   


    ([A-Z]{1,2}[1-9]{1,3})  还有没有必要改成 (^[A-Z]{1,2}[1-9]{1,3}$),用来开始和结束呢?是否功能都是一样的,加上括号就可以了?