提取两个数字之间的固定长度字符串
Extract fixed length string between two numbers
我有这个号码:003859389453604802410207622210986832370060
。在这种情况下,我需要提取 07622210986832
出现在 02
之前并以 37
.
结尾
在现实世界中,07622210986832
始终是 14 位数字,并且总是以 02
开头并以 37
结尾,但它可以出现在字符串中的任何位置随机长度 - 我们所知道的是数字会在某处。
我目前使用的公式是:
=IF(LEN(IFERROR(REGEXEXTRACT(A1:A&"", "02(.*)37")))=14,
但是,您会注意到在数字示例中还有另一个 02
- “024102”。
这导致了一个问题。
我真正想要发生的是:
- 查找
02
- 求14个数的串,如果15是
3
,16是7
(37),就是我们需要的数
- 如果您发现另一个
02
号码为 14 位字符串,而接下来的两个号码不是 37
- 忽略。
使用模式 02(\d{14})37
,它将提取一个 14 位数字序列,前面是 02
,后面是 37
。
这样试试:
=ARRAYFORMULA(REGEXEXTRACT(TO_TEXT({A2:A,B2:B,C2:C}), "02(\d{14})37"))
如果你想把它分成 1 列,那么:
=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(REGEXEXTRACT(TO_TEXT({A2:A,B2:B,C2:C}),
"02(\d{14})37")),,999^99))))
我有这个号码:003859389453604802410207622210986832370060
。在这种情况下,我需要提取 07622210986832
出现在 02
之前并以 37
.
在现实世界中,07622210986832
始终是 14 位数字,并且总是以 02
开头并以 37
结尾,但它可以出现在字符串中的任何位置随机长度 - 我们所知道的是数字会在某处。
我目前使用的公式是:
=IF(LEN(IFERROR(REGEXEXTRACT(A1:A&"", "02(.*)37")))=14,
但是,您会注意到在数字示例中还有另一个 02
- “024102”。
这导致了一个问题。
我真正想要发生的是:
- 查找
02
- 求14个数的串,如果15是
3
,16是7
(37),就是我们需要的数 - 如果您发现另一个
02
号码为 14 位字符串,而接下来的两个号码不是37
- 忽略。
使用模式 02(\d{14})37
,它将提取一个 14 位数字序列,前面是 02
,后面是 37
。
这样试试:
=ARRAYFORMULA(REGEXEXTRACT(TO_TEXT({A2:A,B2:B,C2:C}), "02(\d{14})37"))
如果你想把它分成 1 列,那么:
=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(REGEXEXTRACT(TO_TEXT({A2:A,B2:B,C2:C}),
"02(\d{14})37")),,999^99))))