HH:MM:SS  TRNS:XXXXXX  HH:MM:SS  代表时间
TRNS:XXXXXX  xxxxx是六位固定数字 

解决方案 »

  1.   


    ([0-1][0-9])|(2[0-4])(:[0-6][0-9]){2}\sTRNS:xxxxx
    //你说xxxxx是固定的,那么你把它换成你的固定数字就好了
      

  2.   

    "[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\sTRNS:XXXXXX"
    随便写的,未经验证,我这样应该是把HH MM SS都看成字符了,没看成数字
      

  3.   

    我也是刚学的,错了别笑哦 Pattern p = Pattern.compile("(([01]?[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))\\sTRNS:\\d{6}");
            Matcher m = p.matcher("21:59:56 TRNS:111111");
      

  4.   

    为什么全部人的HH都是[01][0-9]
    没有20:xx:xx的情况么
      

  5.   

    我说了吧,这些你应该在发帖时就说明的,害嘿嘿import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {    private final String regex = "(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+TRANS:\\s*\\d{6}";
        private Pattern pattern = null;    public static void main(String args[]) throws IOException {
            String str = "adfadsf 00:00:00 TRANS: 123456 asdf" +
                    "asdf23:00:00 TRANS:123456";
            Test test = new Test();
            List<String> list = test.get(str);
            
            for(String s : list) {
                System.out.println(s);
            }
        }
        
        public List<String> get(String str) {
            if(pattern == null) {
                pattern = Pattern.compile(regex);
            }
            List<String> list = new ArrayList<String>();
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                list.add(matcher.group());
            }
            return list;
        }
    }
      

  6.   

    赞LS...
    鄙视LSS...
    哈哈...鄙视小宝宝
      

  7.   

    还有一个问题解决了立刻结贴,另加30
    下面这个怎么匹配,数字都是不定值:07:59:28 TRNS:014989 CWD  1,000.00       07:59:30 HOST ACCEPT  
      

  8.   

    private final String regex = "(?:[01][0-9] ¦2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+TRANS:\\s*\\d{6}\\s+CWD\\s*\\d{6}"; 
    要求是014989和CWD以及CWD和后面的数字当中有空格且最后的数字是6位 
    ====================
    你要学会自己参照了+
      

  9.   

    http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm自己看会可以整这个出来了,
      

  10.   

    我在 12 楼的那个看错了,把 TRNS 看成了 TRANS 了,呵呵,改正了一下,
    并加上您在 15 楼提出的要求需要注意的是:07:59:28 TRNS:014989 CWD  3,700.00如果 CWD 后面的数字不符合要求,比如是:3337.00 或者是 ,700.00 这种格式的,
    只能抽取到:07:59:28 TRNS:014989 部分,后面的 CWD 部分抽取不到。import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {
       
        private final String regex = 
                "(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\s+" +
                "(?:HOST\\s+ACCEPT|TRNS:\\s*\\d{6}" +
                "(?:\\s+CWD\\s+\\d\\d?\\d?(?:,\\d{3})*\\.\\d\\d)?)";
        private Pattern pattern = null;    public static void main(String args[]) {
            String str = "adfadsf 00:00:00 TRNS: 123456 asdf" +
                    "asdf07:59:28 TRNS:123456 adfsdfasd" +
                    "adsfasf07:59:28 TRNS:014989 CWD  3,700.00asdfsf" +
                    "adsfasf07:59:28 TRNS:014989 CWD  20.00asdfsf" +
                    "asdf07:59:30 HOST ACCEPTasdfasdf";
            Test test = new Test();
            List<String> list = test.get(str);
            
            for(String s : list) {
                System.out.println(s);
            }
        }
        
        public List<String> get(String str) {
            if(pattern == null) {
                pattern = Pattern.compile(regex);
            }
            List<String> list = new ArrayList<String>();
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                list.add(matcher.group());
            }
            return list;
        }
    }