正则表达式:新线的多次出现选项卡式结果

时间:2016-07-11 09:40:51

标签: regex sublimetext2

我有一个数据集,我需要从一行中的标签中获取值。

说我有这个数据集:

test
pizza

pudding
cheese


Newt
somethingelse

otherstuf


pokemon
somedate
derp

注意2和1个新行之间的区别。

当有2个新行时,将创建一个新行 当有一个新行时,“value”将与空值在同一行中。 这个数据集将成为:

test    pizza         pudding    cheese
Newt    somethingelse    otherstuf
pokemon    somedate     derp

再次注意此示例中的第一行,pizzapudding之间的空行是1行而不是2行。

我尝试在新行上使用^\n匹配并替换为\t,但这会让我在一行上标记所有不符合我要求的内容。 我正在使用 sublime

3 个答案:

答案 0 :(得分:1)

我建议

(.)\R{1,2}+(?!\R)

并替换为$1\t。这样,您将仅匹配1到2个换行符,并使用制表符替换它们。 (.)将确保在第一个换行符之前该行上有一些数据。

enter image description here

模式详情

  • (.) - 第1组捕获换行符以外的字符
  • \R{1,2}+ - 1或2个换行符......
  • (?!\R) - ...没有后面的换行符。

如果您允许合并空行,您可以尝试

(?<!\n)\R{1,2}+(?!\R)

并替换为\t

然后,要用一个替换3个换行符,请使用

\R{3}

并替换为\r\n\n\r,具体取决于您的操作系统/要求。

答案 1 :(得分:0)

当你谈到换行时,你的意思是一个空白行,否则到达一个空白行需要检查两个换行符。关于2个新线也是如此。

查找:(?<!\s)\n(?=\S)|\n{2}

替换为:\t

enter image description here

只是为了展示我的模板。

答案 2 :(得分:0)

选择好的换行序列(根据您的文件)并使用两遍。 Windows换行序列的示例:

使用两遍:

  • \r\n替换为\t
  • \t\t\t替换为\r\n