我正在尝试用“#”替换字符串中的所有数字,前提是它们没有特定的前缀。这些数字可以作为单词的一部分出现,也可以单独作为单词出现。
例如,使用 ABC 作为前缀,这是想要的结果。
输入:
sdkfjsd 12312981 sdkfjsdfhbnmawd 1298 ,smdfsdnfk2342423
sdlkfsdfs 20349 ABC1203912 2034234aac <-- ABC<number> stays, the other numbers do not
ABC1203912
结果(请注意,第 2,3 行的 ABC 带有数字):
sdkfjsd # sdkfjsdfhbnmawd # ,smdfsdnfk#
sdlkfsdfs # ABC1203912 #aac <-- ABC<number> stays, the other numbers do not
ABC1203912
我试图用 regexp: 后面的负面外观来做到这一点s/(?<!ABC)\d+/#/g
。在这种情况下,只有 ABC 之后的第一个数字不会被替换,其余的都会被替换。
我的下一步是将字符串拆分为包含 的部分,ABC\d+
并对其他部分执行简单的替换。
将不胜感激任何建议如何在不拆分为多个字符串的情况下完成整个事情。
谢谢!
编辑 1:将 aac 移回正确位置。编辑 2:我正在使用 perl 5.8.5,以防万一。由于与我无法控制的代码的兼容性问题,我无法更新到较新的版本。