输入行:
Line1 \t435\tYes #expected extraction ("", "435", "Yes")
Line2 A1\t222\tYes #expected extraction ("A1", "222", "Yes")
Line3 A2\t223\tYes #expected extraction ("A2", "223", "Yes")
对于我的java代码,
Pattern p = Pattern.compile("(.*)\\t(.*)\\t(.*)");
Matcher m = p.matcher(.....)
我需要使用正则表达式通过行获取每个字段,正则表达式适用于第2行和第3行。但是,我注意到(。*)不会捕获第1行中的空字段。任何想法?非常感谢!
答案 0 :(得分:0)
尝试这个微小的调整:
Pattern p = Pattern.compile("^(.*)\\t(.*)\\t(.*)");
这会强制搜索“从头开始”,因此\t
之前的“空白”会有一个“空”匹配。
但老实说 - 如果你看http://regex101.com/r/yH3zG3,你的表达看起来应该没有修改。您的文件中还有其他内容吗?如果切换线的顺序会发生什么?你从第1行得到了什么匹配?