【问题标题】:perl inline replace with quotientperl 内联替换为商
【发布时间】:2013-06-23 02:48:15
【问题描述】:

我有表单的文本行

F xxx.xxx 

其中 F 可以后跟任意数量的空格,后跟任意数量的数字,可选地后跟十进制和十进制数字。我想找到这些数字,将它们除以一个变量,然后替换它们。

我的代码大部分都可以工作,但我无法逃避实际计算数字的除法。

my $devisor = 60.0;
s/F\s*?(\d+(\.\d+)?)/"NEWF$1\/$divisor"/;

我怎样才能像这样搜索、计算和内联替换?

【问题讨论】:

    标签: regex perl search replace inline


    【解决方案1】:

    如果您使用“/e”修饰符,s/// 的替换部分将被视为 Perl 表达式并进行计算。此外,您可能需要另一个分隔符,这样您就可以很好地编写除法而无需转义。您的括号将仅捕获小数部分,而不是整数。最后,devisor 是一个拼写错误。

    因此,您可以编写s#F\s*(\d+(\/\d+)?)#$1/$divisor#e(假设您实际定义了$divisor)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-01
      • 2021-08-29
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2011-02-15
      相关资源
      最近更新 更多