0

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

例如:

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

我尝试过诸如(?=(\d{6})*)000000, 以及替换*+, 更改组, 写\d六次而不是\d{6}其他几件事的符号,但我不知道如何将其强制为六的倍数。通常,我会得到如下输出:

“L0101101L00000” instead of “L010110100000L”

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

4

1 回答 1

0

如果我正确理解您的第一个要求,您可以使用以下内容:

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

并将其替换为:

$1L

演示


对于这部分:

或者,有没有办法在每六个字符之后放置一个字符(例如空格)而不删除字符?

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

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

..然后将其替换为\$后跟要添加的字符。例如\$-.

演示

于 2019-07-16T02:34:05.163 回答