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

时间:2019-07-16 02:26:44

标签: regex regex-lookarounds sirishortcuts

我想替换一个字符串,仅在字母L后面加上正则表达式后才对字母L说“ 000000”。我在iOS上使用Siri快捷方式,我的项目是一个管理二进制字符串的系统。我目前的方法是将基本字符串分割成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风格的正则表达式。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的第一个要求,则可以使用以下方式:

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

并替换为:

$1L

Demo


对于这一部分:

  

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

..您可以使用类似以下内容:

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

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

Demo