所以我有一个只想查找 2 个单词的正则表达式 - 一行上只有一个单词会出错,超过三个单词会踢出它并给我一个行号(这就是我想要的)。
#!/usr/bin/perl
use warnings
use strict
open( my $filehandle ,"<", "/tmp/compare.cleartxt.tmpusers" ) || die "cant access the file" ;
while (<$filehandle>) {
if ($_ !~ /^\w+\s\w+$/) {
print "LINE $., error on $_ " ;
}
}
问题是其中一些单词包含“$”符号。喜欢
LINE 700, error on ubs$iontest ubs$iontest
LINE 904, error on uho$jptest uho$jptest uho$jptest
LINE 1929, error on boa$jgb boa$jgb
LINE 2976, error on mitadel mitadel mitadel$001
LINE 3205, error on csfb csfb csfb$jpntest csfb$001 csfb$nytest
LINE 4762, error on mitsi$jgb2 mitsub$jgb2
LINE 6346, error on GOLDSTPTG GOLDSTPTG GOLDSTPTG
LINE 6660, error on jptest mizuho$jptest jptest
所以我想去掉第 700 行或第 1929 行中的误报,但保留第 904 行之类的错误。
我厌倦了使用它,但它出现了更多错误,就像它打印的每个单词都带有一个下划线,比如“foo_bar”
if ($_ !~ /^[a-zA-Z$0-9]+\s[a-zA-Z$0-9]+$/)