【发布时间】:2019-01-18 14:16:38
【问题描述】:
我有 2 个制表符分隔(我用下面的 → 替换了制表符)行,如下所示:
Line1Word1→Line1 Words2→→Line1Word3→→→Line1 Words4
→→Line2Word1→→Line2 Words2→→
预期结果
Line1Word1→Line1 Words2→Line2Word1→Line1Word3→Line2 Words2→→Line1 Words4
通过复制 Excel 中的 3 行,很容易看到结果应该是什么
1号线
Line1Word1 Line1 Words2 Line1Word3 Line1 Words4
对于这条线我得到了
^(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)$
这将获得第 1、2、4 和 7 组。但是,我相信必须有一种更通用的方法来获得这些将占任何数量的组。
第2行
Line2Words1 Line2 Words2
我可以在这里对上面的第 2 行做同样的事情。如果我不知道会有多少人或他们在哪里,仍然需要帮助以更优雅的方式来获得这些团体。
结果
Line1Word1 Line1 Words2 Line2Words1 Line1Word3 Line2 Words2 Line1 Words4
这里我不知道如何组合上面两行中的组,如下所示:
\1(from Line1)\t\2(from Line1)\t\1(from Line2)\t\4(from Line1)...
这些年来,我很少使用正则表达式,但我为此尝试的一切都无济于事。 任何帮助将不胜感激。
回应 Tripleee 的注意事项:
数据格式如下:
我们将它们称为 Array1 和 Array2 而不是 Line1 和 Line2,它们将包含多个 Lines,如上所述的行。两个数组的行数相同
如示例:
Array1 只能有索引 1、2、4 和 7,每行都有数据
Array2 只能有索引 3 和 5,每行都有数据
没有索引将在任何行的两个数组中都有数据
但是,每次脚本运行时,数组的数据都可能在不同的索引中,每次都有或多或少的索引
可以创建一个包含所有数据的变量,用 | 分隔,如下所示:
Row1Array1 | Row1Array2
Row2Array1 | Row2Array2
Row3Array1 | Row3Array2
...
或者数据可以以任何其他有助于使用正则表达式的方式排列。
【问题讨论】:
-
这不是对更复杂需求的一般描述。这是实际的问题。我得到了一个 \t(.*?)\t 来捕获组。当然,这不会捕获第一个或最后一个文本字符串,因为两端没有制表符。除此之外,我不知道如何从 Line2 中提取文本并替换为例如 \1(from Line1)\2(from Line1)\1(from Line2)\3(from Line1)...有什么想法吗?跨度>
-
谢谢 Tiw,我已经修改了原帖以添加更多细节。希望现在更清楚,有人可以提供帮助