正则表达式可以做基本算术吗?

Son*_*Ex2 2 regex math pcre

这是一个相对简单的问题.PCRE(没有扩展功能,例如能够调用主机的功能)可以进行基本算术吗?也就是说,我可以使用PCRE对一元非负整数进行加,减,除和乘以?如果是这样,怎么样?(注意:我可以控制输入,正则表达式和替换字符串)

Joe*_*oey 6

是的你可以.通过使用一元数,即数字只是字符串的长度.这与正则表达式如何检查素数类似(现在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)

话虽如此,关于这个问题的评论者是正确的:如果你能帮助它,你真的不应该这样做(好奇心很好).

  • 这并不是真正的数学运算所期望的:*我可以使用 PCRE* 对数字进行加、减、除和乘运算吗?这些示例仍然是字符串操作方法。 (2认同)