所以我有一個正則表達式只想查找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]+$/)
什麼'/^\ S + \ S \ S + $ /' – hwnd
你有沒有考慮處理之前剝離非單詞字符? – abiessu
將'\ w'替換爲'[\ w $]'(您可能需要將'$'轉義爲'\ $',但我不認爲是這種情況)。 – iamnotmaynard