如何使用正则表达式捕获空字段?

时间:2014-02-20 01:48:28

标签: java regex

输入行:

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行中的空字段。任何想法?非常感谢!

1 个答案:

答案 0 :(得分:0)

尝试这个微小的调整:

Pattern p = Pattern.compile("^(.*)\\t(.*)\\t(.*)");

这会强制搜索“从头开始”,因此\t之前的“空白”会有一个“空”匹配。

但老实说 - 如果你看http://regex101.com/r/yH3zG3,你的表达看起来应该没有修改。您的文件中还有其他内容吗?如果切换线的顺序会发生什么?你从第1行得到了什么匹配?