如何匹配[Perl

时间:2017-10-29 22:00:27

标签: regex perl

我目前正在编写一个perl脚本,我想匹配[符号。我曾尝试仅使用[符号以及使用它来逃避它[但是我得到以下结果:

Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE

我还尝试使用[symbol &#91;的ASCII表示,并收到以下消息:

Use of uninitialized value $term in regexp compilation

我想要匹配的正则表达式只是[字符。我试过了:

$term =~ /[/
$term =~ /\[/
$term =~ /&#91;/

以下是完整的代码:

#!/usr/bin/perl -l
use warnings;
use strict;
opendir (my $dir, '/var/log/') or die "Cannot access the log directory: $!";
my @entry = readdir($dir);
closedir($dir);
for my $i (@entry){
    if($i =~ /\.log$/){
        open(my $log, "/var/log/$i") or die "Cannot open the file $i: $!";
        for my $row (<$log>){
            if($row =~ /[/){
                chomp $row;
                my @string = split ('[', $row);
                print "$string[0]\033[38;2;211;56;211m[\033[0m$string[1]";
            }
        }
    }
}

是否有一种简单或正确的方法来逃避这个角色?

1 个答案:

答案 0 :(得分:1)

  

是否有一种简单或正确的方法来逃避这个角色?

是。与所有正则表达式元字符一样,您使用反斜杠:

$term =~ /\[/