【发布时间】:2019-05-27 20:08:29
【问题描述】:
我的 Perl 脚本接收数据并将其存储为数组。然后脚本获取这些数据并将其转换为代码,然后我可以将其复制到 LaTeX 中。
我的部分数据包括 4.25、6.5、6.75 等数字,我希望进行查找和替换,以便在粘贴到 LaTeX 时将 4.25 写为 4 1/4。要求用户输入存储为$variable 的号码。查找和替换如下:
$variable =~ s/\b.25\b/\\sfrac{1}{4}/;
$variable =~ s/\b.5\b/\\sfrac{1}{2}/;
$variable =~ s/\b.75\b/\\sfrac{3}{4}/;
我想要它做的是将4.25 替换为代码4\sfrac{1}{4},将6.5 替换为代码6\sfrac{1}{2},并将6.75 替换为代码6\sfrac{3}{4}。
但是,当运行它时,它会正确替换 .25 和 .5,但 .75 会替换为 .\sfrac{1}{2}。我对它在做什么感到困惑。
我确实将代码更改为:
$variable =~ s/\b.25\b/\\sfrac{1}{4}/;
$variable =~ s/\b.75\b/\\sfrac{3}{4}/;
$variable =~ s/\b.5\b/\\sfrac{1}{2}/;
这缓解了上述问题,但是当我输入数字 5.5 时,它会将 this 替换为 \sfrac{1}{2}.5 而不是 5\sfrac{1}{2}。
另外,如果我需要将@variable 转换为字符串,我该怎么做?
【问题讨论】:
-
你的最后一句话似乎与这个问题的其余部分无关;也许把它拿出来,用代码问一个单独的问题?
-
顺便说一句,Regexp::Debugger 是一个非常方便的工具,可以查看正则表达式如何在您的字符串中进行。这样你就可以很容易地找到你的正则表达式偏离轨道的地方。
标签: regex perl replace substitution