【发布时间】:2020-05-04 19:43:37
【问题描述】:
假设我在文件中有一些文本
AAAA k1="123" k2="456"
several lines of other stuff
AAAA k1="789" k2="101"
AAAA k1="121" k2="141"
目标是捕获 k1 和 k2 值,但将分组保持在一起。所以第一个匹配会返回 123 和 456 的组,第二个匹配会返回 789 和 101 以及 121 和 141 的组。
我可以编写正则表达式来获取任何单行,甚至可以匹配文件中的所有相关行,但不知道如何将匹配保持在组中。
最困难的是,以 AAAA 开头的行数在各组之间不是恒定的,例如可能是 1 个 AAAA 行,然后是其他一些行,然后是 4 个 AAAA 行,等等。
编辑——澄清一下,各种值需要按组分开。
所以第一组AAAA 行只有一行,所以我期望值123 和456。
第二组AAAA 行有2 行,所以我需要789、101、121 和141 的值。此外,我需要知道789 和101 是相关联的(来自同一行),121 和141 是相关联的(来自同一行),但仍然是第二个的所有部分组(与123 和456 没有任何关联)
最终我想访问对象(javascript),例如
{ '123': '456'}
和
{
'789': '101',
'121': '141
}
如果一行中有 15 行 AAAA 行,则该对象将有 15 个键值对。
【问题讨论】:
-
/^AAAA k1="(\d+)" k2="(\d+)"$/gm这对您有什么帮助?我不完全确定我理解你的问题。 -
@anubhava 不会将分组保持在一起
-
@hackape 不会将跨行分组保持在一起。关键是
AAAA行成组出现,可能有 1 个这样的行,可能有 4 个这样的行,并且需要将值保持在一起。 -
@anubhava 我需要将
123和456值与789和后续值分开 -
@anubhava,已编辑,希望更清晰
标签: javascript regex typescript