如何使用perl在搜索中保留字符串的大写/小写?

时间:2015-03-10 08:32:17

标签: perl

我想搜索" F 频率" (我的第一个大写字母)在我的文本文件中。我的代码将打印到输出文件的一些列,包括" Frequencies"。但是也存在" f 的频率" (文本文件中的小写字母第一个字母)。我在代码中使用了这个部分$search_word = qr/Frequencies/;。如何制作单词的第一个字母" Frequencies" $search_word = qr/Frequencies/;部分中的大写字母,以消除" f 重复性的出现"在搜索?

3 个答案:

答案 0 :(得分:3)

在Perl中,您有ucfirst来大写第一个字母。例如:

$a = "freQuEncY";
$a = ucfirst(lc($a));  # $a <-- "Frequency";

答案 1 :(得分:1)

为什么不使用正则表达式匹配来检查,比如

 if($string_to_be_searched =~ /Frequencies/){
  do something; # like print
  }

答案 2 :(得分:1)

试试这个:

if ( $$test_string[$i] =~ /\b(?i)f(?-i)requencies/ ) {
    my $captured = ucfirst($&);
    # process $captured
}

说明:

  • 正则表达式匹配仅对单词frequencies的第一个字母不区分大小写。 (?i)在模式的其余部分发生的位置打开不区分大小写的匹配,或直到(?-i)撤销它。这也适用于其他旗帜,参见perldoc section on re
  • $&包含完整匹配
  • \b表示单词边界(也许您不需要,但您的问题说明建议您这样做。)