这是一个相对简单的问题.PCRE(没有扩展功能,例如能够调用主机的功能)可以进行基本算术吗?也就是说,我可以使用PCRE对一元非负整数进行加,减,除和乘以?如果是这样,怎么样?(注意:我可以控制输入,正则表达式和替换字符串)
是的你可以.通过使用一元数,即数字只是字符串的长度.这与正则表达式如何检查素数类似(现在PowerShell中的样本,因为大多数这是基本的,每个引擎都应该能够做到这一点.)
替换$或^添加长度的字符串.
'XXXXX' -replace '^', 'XXX' = XXXXXXXX # 5 + 3
Run Code Online (Sandbox Code Playgroud)
替换.{n}$与n被无关减去的数量.
'XXXXX' -replace '.{3}$', '' = XX # 5 - 3
Run Code Online (Sandbox Code Playgroud)
替换.为长度的字符串以乘以.
'XX' -replace '.', 'XXX' = XXXXXX # 2 * 3
Run Code Online (Sandbox Code Playgroud)
替换\G.{n}(?=(.{n})*$)为一串长度1; 与n被分频的通过次数.如果无法替换,则字符串不会更改.
'XXXXXX' -replace '\G.{3}(?=(.{3})*$)', 'X' = XX # 6 / 3
'XXXXXX' -replace '\G.{4}(?=(.{4})*$)', 'X' = XXXXXX # 6 / 4 (!)
Run Code Online (Sandbox Code Playgroud)
话虽如此,关于这个问题的评论者是正确的:如果你能帮助它,你真的不应该这样做(好奇心很好).