我有表单的文本行
F xxx.xxx 其中,F后面可以跟任意数量的空格,后面可以跟任意数量的数字,后面还可以跟一个小数和十进制数字。我想找到这些数字,将它们除以一个变量,然后替换它们。
我的代码大部分都可以工作,但我不能转义来实际计算数字的除法。
my $devisor = 60.0;
s/F\s*?(\d+(\.\d+)?)/"NEWF$1\/$divisor"/;我怎么能像这样搜索、计算和内联替换呢?
发布于 2013-06-26 13:23:20
如果使用'/e‘修饰符,s///的替换部分将被视为Perl表达式并进行计算。此外,您可能需要另一个分隔符,这样您就可以很好地编写除法而不会转义。您的括号将只捕获小数部分,而不是整数。最后,devisor是一个错误的拼写。
因此,您可以编写s#F\s*(\d+(\/\d+)?)#$1/$divisor#e (假设您实际定义了$divisor)。
https://stackoverflow.com/questions/17312017
复制相似问题