解决方案 »

  1.   

    一不注意就按了回车就自动提交了,我的正文都还没写,也不止这个分数,这自动提交的功能可是不太好啊String str="between value1 inclusion value2 exclusion" //相当于>=value1 and <value2//想通过正则表达式把value用一对'号括起来,如下
    String str="between 'value1' inclusion 'value2' exclusion"//说明:
    //1.value1及value2都可以有空格
    //2.inclusion、exclusion都有两种情况的可能,即:inclusion或是exclusion
      

  2.   


     String str="users program value1 with input=value2"//通过正则表达式把users program换成program、with input换成input
    //把value用'括起来,同样,value可以有空格,如下:
     String str="program 'value1' input='value2'"
      

  3.   

    呵呵.为什么不用Oracle的"between value1 and value2"呢?这个更适合你说的>=value1 and <=value2
    另外,这么简单的替换基本上不用正则表达式.就用string本身的replace即可
    如:String str = "between value1 and value2";
    str = str.replace("value1", 123);
    str = str.replace("value2", 234);
      

  4.   

    也许是我没说清楚
    所谓value1及value2当然是未知,楼上的方法当然行不通,再说我的表达式里一定得有inclusion或exclusion,这是一种格式String str="between value1 inclusion/exclusion value2 inclusion/exclusion" // 表达式中的/表或,二选一
      

  5.   


    package Test;
    import java.util.regex.*;
    public class qdb
    {
    public static String f(String input,String regex)
    {
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(input);
    StringBuffer sb=new StringBuffer();
    while(m.find())
    {
    System.out.println(m.group(1));
    m.appendReplacement(sb,"replace ");
    }
    m.appendTail(sb);
    return sb.toString();
    }
    public static void main(String[] args)
    {
    String input="between value1 inclusion value2 exclusion";
    String regex="(\\w+)\\s*(?=exclusion|inclusion)";
    System.out.println(f(input,regex));
    }
    }没看明白题目,不知道是不是这意思?
      

  6.   

    between后面加个单引号,and前后加个单引号
    str结束之前加个单引楼主按照这么操作str试试!
      

  7.   


    package Test;
    import java.util.regex.*;
    public class qdb
    {
    public static String f(String input,String regex)
    {
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(input);
    StringBuffer sb=new StringBuffer();
    while(m.find())
    {
    m.appendReplacement(sb,"'"+m.group(1)+"'");
    }
    m.appendTail(sb);
    return sb.toString();
    }
    public static void main(String[] args)
    {
    String input="between value1 inclusion value2 exclusion";
    String regex="(\\w+)(?=\\s*exclusion|\\s*inclusion)";
    System.out.println(f(input,regex));
    }
    }给分吧,嘿嘿~
      

  8.   


    package Test;
    public class qdb
    {
    public static String f(String input)
    {
    String[] ss=input.split(" ");
    StringBuffer sb=new StringBuffer();
    for(int i=0;i<ss.length;i++)
    {
    String s=ss[i];
    sb.append(s);
    if(i+1<ss.length&&(s.equals("between")||s.equals("inclusion")||s.equals("exclusion")))
    {
    sb.append(" ");
    sb.append("'");
    }
    else if(i+1<ss.length&&(ss[i+1].equals("inclusion")||ss[i+1].equals("exclusion")))
    {
    sb.append("'");
    sb.append(" ");
    }
    else
    {
    sb.append(" ");
    }
    }
    return sb.toString();
    }
    public static void main(String[] args)
    {
    String str="between val   dfdsf ue1 inclusion val dsfsdaf  dsfsdfsdafasdf sdaf e2 exclusion";
    System.out.println(f(str));
    }
    }直接解析~
      

  9.   

    呵呵.为什么不用Oracle的"between value1 and value2"呢?这个更适合你说的>=value1 and <=value2 
    另外,这么简单的替换基本上不用正则表达式.就用string本身的replace即可 
    如:String str = "between value1 and value2";
    str = str.replace("value1", 123);
    str = str.replace("value2", 234);
     
      

  10.   

    package Test;
    import java.util.regex.*;
    public class qdb
    {
        public static String f(String input,String regex)
        {
            Pattern p=Pattern.compile(regex);
            Matcher m=p.matcher(input);
            while(m.find())
            {
                input=input.replace(m.group(1),"'"+m.group(1)+"'");
            }
            return input;
        }
        public static void main(String[] args)
        {
            String input="between val   ue 123 21 1 inclusion va  lu  asdas e2 exclusion";
            String input1="between val   ue 123 21 1 inclusion va  lu  asdas e2 inclusion";
            String input2="between val   ue 123 21 1 exclusion va  lu  asdas e2 exclusion";
            String regex="(?:between|inclusion|exclusion)\\s*(.+?)\\s*(?=exclusion|inclusion)";
            System.out.println(f(input,regex));
            System.out.println(f(input1,regex));
            System.out.println(f(input2,regex));
        }
    }
    String regex="(?:between|inclusion|exclusion)\\s*(.+?)\\s*(?=exclusion|inclusion)";
    between,inclusion,exclusion 与exclusion,inclusion 中间夹杂的字符串加'
    应该没啥问题了吧?
      

  11.   

    謝謝qiandongbo,你的方法好像有點對了,我再進一步測試一下先。
      

  12.   

    OK,有错误告诉我,我先去看会动漫,为了这120分动漫都米看 T-T~
      

  13.   


      String input="between   val  ue 123 21 1   inclusion  exclusion"; 
      String input1="between  inclusion va  lu  asdas e2 inclusion"; //得出的結果為:
    between' '' '' ''val' '' 'ue' '123' '21' '1'' '' '' 'inclusion' '' 'exclusion
    between  'inclusion va  lu  asdas e2' inclusion//理想的結果為:
    between 'val  ue 123 21 1' exclusion '' exclusion
    between '' exclusion 'va  lu  asdas e2' exclusion
      

  14.   


    package Test;
    import java.util.regex.*;
    import java.util.*;
    public class qdb
    {
        public static String f(String input,String regex)
        {
         ArrayList<String> list=new ArrayList<String>();
            Pattern p=Pattern.compile(regex);
            Matcher m=p.matcher(input);
            StringBuffer sb=new StringBuffer();
            while(m.find())
            {
             System.out.println(m.group(1)+",");
             m.appendReplacement(sb, "'"+m.group()+"'");
            }
            m.appendTail(sb);
            return sb.toString();
        }
        public static void main(String[] args)
        {
         String input="between   val  ue 123 21 1   inclusion  exclusion"; 
           String input1="between  inclusion va  lu  asdas e2 inclusion";         String input2="  between dsfsdaf fgdsfgs  v alue exclusion va inclusion  ";
            String regex="(?<=between|inclusion|exclusion)(.+?)\\s(?=exclusion|inclusion)";
            System.out.println(f(input,regex));
            System.out.println(f(input1,regex));
        }
    }
    闷了半天,楞是没想去怎么把匹配好的完整的放回去,改了这个方法,不过这个很影响效率~
      

  15.   

    public class HelloWorld {
        private static final String PATTERN1 = "^between(.+?)(inclusion|exclusion)(.+?)(inclusion|exclusion)$";    private static final String PATTERN2 = "^users program(.+?)with input=(.+?)$";    public static void main(String[] args) {
            String input = "between   val  ue 123 21 1   inclusion  exclusion";
            String input1 = "between  inclusion va  lu  asdas e2 inclusion";
            System.out.println(testPattern1(input));
            System.out.println(testPattern1(input1));
            String str = "users program value1 with input=value2";
            String str1 = "users program   val  ue 123 21 1   with input= va  lu  asdas e2 ";
            System.out.println(testPattern2(str));
            System.out.println(testPattern2(str1));
        }    /**
         * @param str
         *            String str="between value1 inclusion value2 exclusion"
         */
        public static String testPattern1(String str) {
            str = str.replaceAll(PATTERN1, "$1 between $2 between $3 between $4");
            String[] parts = str.split("\\bbetween\\b");
            return "between '" + parts[0].trim() + "' " + parts[1].trim() + " '" + parts[2].trim() + "' " + parts[3].trim();
        }    /**
         * @param str
         *            String str="users program value1 with input=value2";
         */
        public static String testPattern2(String str) {
            str = str.replaceAll(PATTERN2, "$1 with $2");
            String[] parts = str.split("\\bwith\\b");
            return "program '" + parts[0].trim() + "' input='" + parts[1].trim() + "'";
        }
    }between 'val  ue 123 21 1' inclusion '' exclusion
    between '' inclusion 'va  lu  asdas e2' inclusion
    program 'value1' input='value2'
    program 'val  ue 123 21 1' input='va  lu  asdas e2'
      

  16.   

    谢谢各位先qiandongbo最后的那个方法又有了新的问题,
    本应是:between 'val  ue 123 21 1' exclusion '' exclusion
    却变成了:between' val  ue 123 21 1 'exclusion' 'exclusion
    在value的两边都加多了空格,而between与'号之前却没了空格
    rcom10002的方法基本上能够实现,但当有下列情形时会报错
    String input = "between   val  ue 123 21 1   inclusion  ";
    上面这种情况是不满足条件的,一定要是如下格式才行,否则最好是返回null
    String str="between value1 inclusion/exclusion value2 inclusion/exclusion" // 表达式中的/表或,二选一而对于String str="users program value1 with input=value2"
    with input=value2这一部分可以省略,即为String str="users program value1"再次感谢各位!