在标签之间提取文本

时间:2018-11-30 11:57:19

标签: regex

我用制表符分隔线

13723181    2018-04-26 14:57:35 NULL    2   5   put quotes around,this.text 1   2018-04-26 14:57:35 NULL    921011  1499

使用“ \ t”作为制表符,只是为了阐明实际制表符的位置

13723181 \t 2018-04-26 14:57:35 \t NULL \t 2 \t 5 \t put quotes around,this.text \t 1 \t 2018-04-26 14:57:35 \t NULL \t 921011 \t 1499

我希望能够将此行重写为“适当的” csv行,如下所示:

13723181,2018-04-26 14:57:35,NULL,2,5,"put quotes around,this.text",1,2018-04-26 14:57:35,NULL,921011,1499

我想这可以分两个步骤完成:

  1. 将引号放在包含逗号且为 由标签包围
  2. 用逗号替换所有标签

第2步很容易.. 我在第1步上苦苦挣扎,如何找到包含逗号的子字符串,该子字符串被制表符包围,但不包含制表符本身。.我感觉我与

非常接近
(?<=\t)(.*,.*?)(?=\t)

但这与2018-04-26 14:57:35 NULL 2 5 put quotes around,this.text相匹配 而不是put quotes around,this.text我不想使用...

1 个答案:

答案 0 :(得分:0)

有时您在发布问题后的1分钟内弄清答案:)

(?<=\t)([^\t]+,[^\t]+)(?=\t)

完全按照我的需要工作。