这是一个相对简单的问题。 PCRE(没有扩展功能,例如能够调用主机功能)可以进行基本算术吗?也就是说,我可以使用PCRE对一元非负整数进行加,减,除和乘以?如果是这样,怎么样? (注意:我可以控制输入,正则表达式和替换字符串)
答案 0 :(得分:5)
是的,你可以。通过使用一元数,即数字只是字符串的长度。这类似于regexes can check for prime numbers(PowerShell中的示例),因为大部分内容都是如此基本,以至于每个引擎都应该能够执行此操作。)
将$
或^
替换为要添加的长度字符串。
'XXXXX' -replace '^', 'XXX' = XXXXXXXX # 5 + 3
将.{n}$
替换为n
作为要减去的数字。
'XXXXX' -replace '.{3}$', '' = XX # 5 - 3
将.
替换为要乘以的长度字符串。
'XX' -replace '.', 'XXX' = XXXXXX # 2 * 3
将\G.{n}(?=(.{n})*$)
替换为长度为1
的字符串; n
是除以的数量。如果无法替换,则字符串不会更改。
'XXXXXX' -replace '\G.{3}(?=(.{3})*$)', 'X' = XX # 6 / 3
'XXXXXX' -replace '\G.{4}(?=(.{4})*$)', 'X' = XXXXXX # 6 / 4 (!)
话虽如此,关于这个问题的评论者是正确的:如果你能提供帮助,你真的不应该这样做(好奇心很好)。