正则表达式:多次出现换行选项卡式结果

Regex: multiple occurence of new line Tabbed outcome

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

假设我有这个数据集:

test
pizza

pudding
cheese


Newt
somethingelse

otherstuf


pokemon
somedate
derp

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

当有2个新行时,将创建一个新行 当有 1 个新行时,"value" 将与空值位于同一行。 这个数据集会变成这样:

test    pizza         pudding    cheese
Newt    somethingelse    otherstuf
pokemon    somedate     derp

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

我尝试在新行上匹配:^\n 并用 \t 替换,但这会让我在一行上显示所有内容,这不是我想要的.. 为此,我正在使用 sublime

我建议

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

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

图案详情:

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

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

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

并替换为 \t

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

\R{3}

并替换为 \r\n\n,或 \r,具体取决于您的 OS/requirements。

当您谈论换行符时,您指的是空白行,否则到达空白行需要检查两个换行符。 2 条换行符也是如此。

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

替换为:\t

为了炫耀我的模板。

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

使用两遍:

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