Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java在文本输入流中匹配条件正则表达式组,忽略格式错误的行_Java_Regex - Fatal编程技术网

使用Java在文本输入流中匹配条件正则表达式组,忽略格式错误的行

使用Java在文本输入流中匹配条件正则表达式组,忽略格式错误的行,java,regex,Java,Regex,通过与a的练习,我发现以下模式能够匹配我感兴趣的组: 我试着用如下方式“Java化”它:Pattern.compile((a-zA-Z)(\t)(0-9)”,不确定这是否正确。。。但稍后会有更多关于这方面的内容 我的输入流如下所示: for (String k : debugOutput) { Pattern pattern = Pattern.compile("(a-zA-Z)( \t)(0-9)"); Matcher matcher = pattern.matcher(k)

通过与a的练习,我发现以下模式能够匹配我感兴趣的组:

我试着用如下方式“Java化”它:
Pattern.compile((a-zA-Z)(\t)(0-9)”,不确定这是否正确。。。但稍后会有更多关于这方面的内容

我的输入流如下所示:

for (String k : debugOutput) {
    Pattern pattern = Pattern.compile("(a-zA-Z)( \t)(0-9)");
    Matcher matcher = pattern.matcher(k);
    while (matcher.find()) {
        System.out.println("group 1: " + matcher.group(1));
        System.out.println("group 2: " + matcher.group(2));
        System.out.println("group 3: " + matcher.group(3));
    }
}
日志####
慰问:
makePush 2196
makePush 638
makePush 470
opAdd 8342
opAdd 288
opStop 133
0x
调试:
####痕迹####
PUSH32 pc=00000000燃气=1000000000成本=3
PUSH32 pc=00000033气体=99999997成本=3
堆栈:
00000000  0000000000000000000000000000000000000000000000000000000000000005
PUSH32 pc=00000066气体=99999994 4成本=3
堆栈:
00000000  0000000000000000000000000000000000000000000000000000000000000005
00000001  0000000000000000000000000000000000000000000000000000000000000005
添加pc=00000099气体=99999991成本=3
堆栈:
00000000  0000000000000000000000000000000000000000000000000000000000000005
00000001  0000000000000000000000000000000000000000000000000000000000000005
00000002  0000000000000000000000000000000000000000000000000000000000000005
添加pc=00000100气体=99999988成本=3
堆栈:
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a
00000001  0000000000000000000000000000000000000000000000000000000000000005
停止pc=00000101气体=99999985成本=0
堆栈:
000000000000000000000000000000000000000000000000000000000000000000000000000000000 F
因此,我不仅要匹配大空格前后的两行不同部分(实际上是三个连续的制表符),而且还要忽略不符合该模式的每一行,即“
一些字母字符”
,“
大空格”
,“
几个数字”

我试着这样做:

for (String k : debugOutput) {
    Pattern pattern = Pattern.compile("(a-zA-Z)( \t)(0-9)");
    Matcher matcher = pattern.matcher(k);
    while (matcher.find()) {
        System.out.println("group 1: " + matcher.group(1));
        System.out.println("group 2: " + matcher.group(2));
        System.out.println("group 3: " + matcher.group(3));
    }
}

但这是行不通的——它不会选择我想要的群体,也不会忽略我试图避免的台词

将模式更改为:

Pattern pattern = Pattern.compile("([a-zA-Z]+)(\\s+)([0-9]+)");
那么如果输入行等于

String input = "makePush            2196";
它打印

1组:makePush
第2组:
第3组:2196

它会忽略其他行?@s.matthew.english是的,因为它们与模式不匹配。我不知道为什么-但对我来说这不起作用-它甚至不会根据条件输入循环matcher@s.matthew.english在你分享的要点中,模式与我的不同。您缺少
+
符号。不-我在那里有-我只是拿出来做一些实验-当我测试它时-它在那里,这只是完整的文件-用于上下文,所以一旦您在图案部分显示更多的代码,可以吗?你怎么读这个文件?这有点复杂,因为这是hadoop的工作