正则表达式 – Perl替代操作符是做什么的?

前端之家收集整理的这篇文章主要介绍了正则表达式 – Perl替代操作符是做什么的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在Perl中编程了,多年以来,尽管只是偶然的是我的主要语言.因为我经常去几个月没有写任何perl,我严重依赖我的狗耳朵的骆驼书,提醒我如何做的事情.但是,当我无意识地复制食谱时,这使我烦恼.这是最令人烦恼的一个:在第三版骆驼的第154页,有一个例子,“修改string en passant,其内容如下所示:
($lotr = $hobbit) =~ s/Bilbo/Frodo/g;

Q1)这里发生了什么?正是这个正则表达式正在运行?

Q2)这种基本操作是否需要这种近似魔法的语法,“从$a取一个字符串,用正则表达式修改它,将结果放在$b”?

Q3)如何使用循环默认变量作为初始字符串进行此操作?

对于上述看似完美自然的Perl梦想家,提前道歉.

嗯…($lotr = $hobbit)=〜s / Bilbo / Frodo / g是Perl的众多魔术之一.现在给一些答案.

Q1)$lotr正在分配$hobbit中包含的值.分配后,我们可以忘记源变量.对待($lotr = $hobbit),因为它是自己的声明,如果我们写的:

$lotr = $hobbit;
$lotr =~ s/Bilbo/Frodo/g;

代替.正则表达式在$lotr上运行.

Q2)语法只是上面给出的代码段的一行版本.将它视为“将字符串从$a复制到$b,并使用正则表达式修改$b”而不是“从$a取一个字符串,将结果放在$b”

Q3)我假设你的意思是默认模式搜索空间“循环默认变量”?在这种情况下,只需使用$_而不是$hobbit:

while (<>) {
  chomp;
  ($lotr = $_) =~ s/Bilbo/Frodo/g;
  print "\$lotr = [$lotr]\n";
  print "\$_    = [$_]\n";
}

有趣的是,这个操作没有修改魔术var $_.这是你如何得出结论,赋值发生在正则表达式替换之前,并且替换不以任何方式在默认模式空间上进行交互.

对于经验丰富的Perl程序员来说,我不知道有太多的Perl语法被抛出来,而不管他们盯着Schwartz先生呢?)

猜你在找的正则表达式相关文章