regex - 尝试使用 perl 进行替换

标签 regex string perl substitution

我有这段文字:

rojo

我想做一个替换,把它变成:

rojo77

所以我正在尝试:

perl -pi.bak -e "s/(ojo)/$177/g" oven.txt

如果我想用文本而不是 77 替换,我不会有任何问题,但作为一个数字,我得到的结果是:

r

我的意思是,它匹配 ojo,但替换不起作用,所以匹配的所有内容都会被删除。如何使用 $1 并在其旁边使用数字?

请帮忙!

最佳答案

作为初学者:因为您事先知道您要匹配的确切字符串部分,所以您实际上不需要替换变量:

s/ojo/ojo77/

但是如果你想使用替换变量,你可以这样做:

s/(ojo)/${1}77/

正如 zdim 评论的那样, 这也可以用 special assertion \K 表示,这基本上意味着保留剩下的东西:

s/ojo\K/77/

关于regex - 尝试使用 perl 进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62033808/

相关文章:

php - 删除两个单词之间的空格

ruby - #upcase 的奇怪行为!在 ruby 中

c++ - 如何从 fstream 中获取数据,然后再获取?

java - java 测试字符串是否包含整数

regex - 使用正则表达式检查 Word 宏中的数值

c - 如何将 regexec 与内存映射文件一起使用?

regex - 用于替换匹配模式的多行的正则表达式

linux - perl 解压文件

perl - 如何在文件中搜索模式并从匹配点到文件末尾获取新文件?

regex - perl正则表达式大数据性能