我想做一个字符串替换,如果我在两个术语之间找到一个字符串,我会替换它,所以当我有一个字符串时:
"123 pre 456 post"
我可以得到:
"123 pre 789 post"
我可以通过做类似的事情来做到这一点:
string.sub(/(pre\s+)\S+(\s+post)/, "\\1789\\2")
但是,我想尽可能避免使用这两个捕获。事实上,我想改用这样的正则表达式:/pre\s+(\S+)\s+post/
并获取捕获的范围,然后替换它。有没有办法做到这一点(使用标准的 Ruby 库)?
最佳答案
你可以这样做:
"123 pre 456 post".sub(/(?<=pre)\s+\S+\s+(?=post)/, ' 789 ')
关于Ruby:替换捕获的字符串部分的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970371/