逃生空白+双引号+标签

时间:2018-04-11 13:23:16

标签: java regex string

我实际上有一个包含大量行(几乎1M)的文件,如下所示。

736206  " 8214152  "    ""  
736207  "7357074"   ""  
736202  "7904815"   "TEST"  
736203  "8117263"   "TEST"  
736204  "8117263"   "TEST"  
736205  "9074391"   ""  
736221  "8308161"   ""  
736214  "7707114"   ""  
736229  "8215534"   ""  
736242  "9572006"   ""  
736255  "8418162"   ""  
736222  "7347835"   ""  
736230  "9044748"   "TROLL,A"   1999-01-01 00:00:00

我需要放入String []或列出每个元素,不要有空格,空格,制表符等......如:

736230  
9044748
TROLL,A
1999-01-01 00:00:00

我不像正则表达式,但我尝试了一些......这实际上是一个史诗般的失败。

"\"([^\"]*)\"" ---
"\"([a-z\\s]+)\"" ---
^[^\"]*\"|\"[^\"]*$ ---

似乎没什么用。

2 个答案:

答案 0 :(得分:0)

您可能希望逐行阅读并应用类似这样的模式

[a-z0-9A-Z,-:]+([ ]{1}|)[a-z0-9A-Z,-:]+

示例

Regex example pattern

答案 1 :(得分:-1)

根据您的输入数据:

    String data = "736206  \" 8214152  \"    \"\"  \n"
            + "736207  \"7357074\"   \"\"  \n"
            + "736202  \"7904815\"   \"TEST\"  \n"
            + "736203  \"8117263\"   \"TEST\"  \n"
            + "736204  \"8117263\"   \"TEST\"  \n"
            + "736205  \"9074391\"   \"\"  \n"
            + "736221  \"8308161\"   \"\"  \n"
            + "736214  \"7707114\"   \"\"  \n"
            + "736229  \"8215534\"   \"\"  \n"
            + "736242  \"9572006\"   \"\"  \n"
            + "736255  \"8418162\"   \"\"  \n"
            + "736222  \"7347835\"   \"\"  \n"
            + "736230  \"9044748\"   \"TROLL,A\"   1999-01-01 00:00:00";

让我们删除data中的所有双引号,如下所示:

data = data.replace("\"", "");

如果您将数据打印到控制台,数据将为:

736206   8214152        
736207  7357074     
736202  7904815   TEST  
736203  8117263   TEST  
736204  8117263   TEST  
736205  9074391     
736221  8308161     
736214  7707114     
736229  8215534     
736242  9572006     
736255  8418162     
736222  7347835     
736230  9044748   TROLL,A   1999-01-01 00:00:00

现在您可以看到,您尝试隔离的每条信息都被两个或多个空格分隔开。我们可以使用这个cue和regex将它转换为一个字符串数组,如下所示:

String[] split = data.split("(\\s){2,}");

(\\s){2,}搜索data以查找有两个或更多连续空格字符并将其拆分的实例。

最终输出:

736206
8214152
736207
7357074
736202
7904815
TEST
736203
8117263
TEST
736204
8117263
TEST
736205
9074391
736221
8308161
736214
7707114
736229
8215534
736242
9572006
736255
8418162
736222
7347835
736230
9044748
TROLL,A
1999-01-01 00:00:00

通过这两个基本操作,您将能够解决问题,而不是使用复杂的正则表达式。