regex - Perl替代模式匹配中的算术计算

标签 regex perl

仅使用 Perl 替换正则表达式语句( s/// ),下面我们怎么写:

每个成功匹配只包含一串字母字符 A..Z .我们需要将匹配字符串替换为匹配字符串中每个字符的字符索引(按字母顺序)的总和。

注意:对于 A,字符索引将为 1,对于 B,2 ... 和 Z 将为 26。

请看下面的例子:

success match: ABCDMNA  
substitution result: 38  

笔记:
1 + 2 + 3 + 4 + 13 + 14 + 1 = 38; 

自从
A = 1, B = 2, C = 3, D = 4, M = 13, N = 14 and A = 1.

最佳答案

我想我会将此作为答案发布,尽管提出这个想法的功劳应该归功于 abiessu对于 his answer 中提出的想法.

perl -ple'1 while s/(\d*)([A-Z])/$1+ord($2)-64/e' 

由于这显然是家庭作业和/或学术兴趣,我将在剧透标签中发布解释。

- 我们匹配一个可选号码 (\d*) ,后跟一个字母 ([A-Z]) .数字是运行总和,字母是我们需要添加到总和的内容。
- 通过使用 /e修饰符,我们可以做数学运算,将捕获的数字添加到 ord()捕获的字母的值,减去 64。返回并插入总和而不是数字和字母。
- 我们使用 while循环冲洗并重复,直到所有字母都被替换,剩下的就是一个数字。我们使用 while 循环代替 /g修饰符将匹配重置为字符串的开头。

关于regex - Perl替代模式匹配中的算术计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25675850/

相关文章:

perl - 如果在 sort() 期间使用了不存在的模块,则脚本将终止 - DateTime::TimeZone::Locale 示例

ios - 无法进行正则表达式匹配

php - 正则表达式删除除表情符号以外的所有非字母数字字符

Perl 无法找到并打开现有文件 文件名 即使我可以打印出完全相同的文件名

perl - 如何使用 Pod::Weaver 在 Perl POD 中添加 HTML 部分

android - Aosp 构建错误

mysql - Perl/DBI 查询不保留 JSON 输出的整数值

java - java中的ruby gsub函数,可能是replaceAll?

mysql - sql- 查询以查看 URL 的所有主机名及其计数

regex - Go validator.v2 为正则表达式给出错误 "unknown tag"