如何替换六个字符的倍数后的序列?

How to replace a sequence after a multiple of six characters?

我想用正则表达式替换一个字符串,仅当它出现在六位数字的倍数之后时才对字母 L 说“000000”。我在 iOS 上使用 Siri 快捷方式,我的项目是一个管理二进制字符串的系统。我当前的方法是将基本字符串拆分为 6 个字节的块,然后拆分为 运行 我的正则表达式,但这效率不高,而且它会因较大的字符串而崩溃。

例如:

Input: “000000010110100000000000”
Split for human reading: “000000-010110-100000-000000”
Desired output: “L010110100000L”

我尝试过 (?=(\d{6})*)000000 等符号,以及用 + 替换 *,更改组,将 \d 写六次而不是 [=16] =] 和其他一些东西,但我无法弄清楚如何将其强制为六的倍数。通常,我会得到如下输出:

“L0101101L00000” instead of “L010110100000L”

有没有办法确保我要替换的字符串后面有六位数字(不是字符)的倍数?或者,有没有办法在不删除字符的情况下,在每六个字符之后放置一个 space 之类的字符? Siri Shortcuts 使用正则表达式的 ICU 风格。

如果我正确理解你的第一个要求,你可以使用这样的东西:

(\G(?:\d{6})*?)(000000)

并将其替换为:

L

Demo.


对于这部分:

Alternatively, is there a way to put a character such as a space after every sixth character without removing the characters?

..你可以使用类似的东西:

(\d{6})(?!$)

..然后将其替换为 $,然后是您要添加的字符。例如 $-.

Demo.