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

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

最佳答案

尝试这个小调整:

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

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

但老实说 - 如果你看 http://regex101.com/r/yH3zG3看来您的表达式无需修改即可工作。你的文件里还有其他事情吗?如果调换行的顺序会发生什么?从第 1 行你得到什么匹配?

关于java - 如何使用正则表达式捕获空字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896440/

相关文章:

java - Oracle 11g 中未找到 JDBC 驱动程序类 : oracle. jdbc.OracleDriver

javascript - 输入无效和输入为空时的不同标题

java - 使用RML-Mapper库将xml文件转换为RDF的最佳mapping.ttl文件是什么?

java - java REST项目资源配置错误

regex - 在 word/VBA 中查找超过一个大写字母的单词

regex - 如何过滤 Bash 正则表达式(Linux)中除一个之外的所有值?

regex - 使用正则表达式选择查询 - MySql

ruby - 提取分隔符之间的字符串

java - 求两个矩阵的 boolean 积

java - 如何在 spring security 登录后恢复表单?