Δημοσιεύτηκε: 25 Φεβ 2013, 01:15
Ορίστε:
Θεώρησα ότι πριν και μετά τα 1 / 2, 2 / 3 κλπ υπάρχει ένα κενό. Αν όχι, πες μου να το αλλάξω.
Μπορείς με την Perl να σώσεις το source μιας σελίδας σε μεταβλητή, χωρίς να χρειάζεται να το αποθηκεύσεις σε αρχείο. Αν θες, το μετατρέπω και έτσι.
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#!/usr/bin/env perl
use strict;
use warnings;
use Encode; # Perl module από το cpan.org
use utf8;
@ARGV == 2 or die "Usage: $0 input_file word\n"; # θέλουμε 2 arguments ακριβώς
my $input_file = $ARGV[0]; # το όνομα του αρχείου με το κείμενο
local $/ = undef; # δίνει εντολή να διαβάζει περιεχόμενα από την αρχή ως το τέλος, χωρίς διακοπή σε κάποιο χαρακτήρα
open my $fh, '<', $input_file or die $!; # άνοιξε το αρχείο και διάβασε τα περιεχόμενά του
my $text = <$fh>;
close $fh;
$text = decode 'UTF8', $text; # αν κανένας χαρακτήρας είναι utf-8
my $word = $ARGV[1]; # επιλογή λέξης
binmode STDOUT, ':encoding(UTF-8)'; #τύπωσε ως utf-8, αν και μάλλον δεν χρειάζεται εδώ
while ( $text =~ /$word/ )
{
if (
$text =~ /$word # λέξη
.*? # οτιδήποτε άλλο ανάμεσα (non-greedy)
\s(\d+\s\/\s\d+)\s
/xs
)
{
print $1 . "\n";
$text = $';
}
else
{
last; # βγες από το loop αν δεν ισχύει το regex παραπάνω
}
}
Θεώρησα ότι πριν και μετά τα 1 / 2, 2 / 3 κλπ υπάρχει ένα κενό. Αν όχι, πες μου να το αλλάξω.
Μπορείς με την Perl να σώσεις το source μιας σελίδας σε μεταβλητή, χωρίς να χρειάζεται να το αποθηκεύσεις σε αρχείο. Αν θες, το μετατρέπω και έτσι.