我目前正在编写一个perl脚本,我想匹配[符号。我曾尝试仅使用[符号以及使用它来逃避它[但是我得到以下结果:
Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE
我还尝试使用[symbol [
的ASCII表示,并收到以下消息:
Use of uninitialized value $term in regexp compilation
我想要匹配的正则表达式只是[
字符。我试过了:
$term =~ /[/
$term =~ /\[/
$term =~ /[/
以下是完整的代码:
#!/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]";
}
}
}
}
是否有一种简单或正确的方法来逃避这个角色?
答案 0 :(得分:1)
是否有一种简单或正确的方法来逃避这个角色?
是。与所有正则表达式元字符一样,您使用反斜杠:
$term =~ /\[/