1

だから私は2つの単語だけを探したい正規表現を持っています.1行に1つの単語だけでエラーが発生し、3つ以上の単語がそれを追い出し、行番号を与えてくれます(これが私が欲しいものです)。

#!/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]+$/)  
4

2 に答える 2

1

以下を使用できます。

/^[\w$]+\s[\w$]+$/
于 2013-11-14T23:12:38.830 に答える