输入行:
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 行中的空字段。任何想法?非常感谢!
最佳答案
尝试这个小调整:
Pattern p = Pattern.compile("^(.*)\\t(.*)\\t(.*)");
这会强制“从头开始”搜索,因此 \t
之前的“无”将会有一个“空”匹配。
但老实说 - 如果你看 http://regex101.com/r/yH3zG3看来您的表达式无需修改即可工作。你的文件里还有其他事情吗?如果调换行的顺序会发生什么?从第 1 行你得到什么匹配?
关于java - 如何使用正则表达式捕获空字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896440/