如何将子字符串替换为小写以进行全局搜索
我正在尝试使用“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。