Perl regex membantu mencocokkan karakter apa pun kecuali spasi tambahan

mencari bantuan perl. Saya tidak pandai dengan regex. Namun pada dasarnya inilah bantuan yang saya perlukan:

-strip out the leading blank line
-regex for any value after the directory `/foo/bar/set`, excluding trailing spaces

Hasil yang diharapkan:

55
proxy
test.event.done

File masukan uji:

<leading blank :line here>     
/foo/bar/set/55
/foo/bar/set/proxy
/foo/bar/set/test.event.done

Kode:

while(my $line=<>) {
    chomp($line);
    if ($line =~ m#foo/bar/set/(not sure what to match here) {
        print "$line\n";
    }
}

person jdamae    schedule 08.04.2011    source sumber
comment
Apakah masalahnya Anda tidak tahu cara menulis \S+?   -  person tchrist    schedule 09.04.2011


Jawaban (3)


(.*) cocok dengan semua yang ada di baris dan Anda bisa mendapatkan nilainya dari $1.

gunakan ini untuk menguji regex Anda: http://regexpal.com/

person duedl0r    schedule 08.04.2011
comment
Tidak, jangan pernah menggunakan sesuatu yang lain untuk menguji regex! Gunakan Perl. - person tchrist; 09.04.2011
comment
mungkin bagi Anda..tetapi ada orang yang baru mengenal topik ini - person duedl0r; 09.04.2011

Jika inputnya adalah jalur direktori dan jika Anda perlu mengekstrak nama file, Anda dapat menggunakan metode nama dasar modul Perl File::Basename.

use File::Basename;
$filename = basename ($dirpath);
person Shalini    schedule 08.04.2011

person    schedule
comment
@euguene - terima kasih atas balasan Anda. bisakah kamu memberitahuku apa yang dilakukan next if? - person jdamae; 09.04.2011
comment
Apa sih [^\s] itu? Bukankah itu \S? - person tchrist; 09.04.2011
comment
@tchrist: tentu. waktunya tidur - person Eugene Yarmash; 09.04.2011