如何将子字符串替换为小写以进行全局搜索

我正在尝试使用“s/substring/replacement/”将子字符串替换为所有小写字母,以便进行全局搜索和不区分大小写的搜索。

读取文件:

while(<>){
  print $_/XXX/book/i;  #this line prints the default variable $_
}

样本输入:

I have a BOOK to read.
I like BoOk to read.

示例输出:

I have a book to read.
I like book to read.

我不确定使用“$_”的方式是对还是错。

回答

while(<>) {...}循环中,主题变量$_包含当前行。s///如果您未指定要操作的字符串,则替换运算符默认使用此变量。试试下面的代码:

my $str = 'book';
while(<>){
    s/(Q$strE)/lc $1/gei;
    print;
}
  • 注意:如果您不想替换book另一个单词内的子字符串,可以b向正则表达式添加单词边界:

    s/b(Q$strE)b/lc $1/gei;
    
  • 注意:使用双括号<<>>而不是更安全<>,有关更多详细信息,请参阅perlop。


以上是如何将子字符串替换为小写以进行全局搜索的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>