私はテキストを持っており、正規表現とperlを使ってパーサーを作成します。テキスト内の正確な点からマッチングしてマッチングを開始する方法
2つの空白行の後にテキストブロックを認識できるパターンがあるので、私は2つの空行(私はregexpを使用します)と必要なものを一致させることができます。
しかし、問題は、全体のテキストには導入の部分と最後にいくつかのテキストが必要であるということです。ここで
は、テキストと一致するコードには2つの空行
#!/usr/bin/perl
use strict;
use warnings;
my $file = 'first';
open(my $fh, '<', $file);
my $empty = 0;
my $block_num = 1;
open(OUT, '>', $block_num . '.txt');
while (my $line = <$fh>) {
chomp ($line);
if ($line =~ /^\s*$/) {
$empty++;
} elsif ($empty == 2) {
close(OUT);
open(OUT, '>', ++$block_num . '.txt');
$empty = 0;
}
else {
$empty = 0;}
print OUT "$line\n";
}
close(OUT);
を見つけたとき、これは私が必要とするテキストの例である(それは本当に小さな:)です)
です
私はそれが単語LOREMを見つける瞬間までテキストを繰り返し処理する必要があると思いますこの種の "/^LOREM IPSUM /"は、必要なテキストが始まるポイントであり、単語に到達するとテキストを1つのファイルに保存するため、正規表現を使用しています。 そして、INDEXワードがfountのときにテキストを繰り返し処理するか、別のファイルにテキストを保存する必要があります。
どうすれば実装できますか。私はを次のように使用してください:行を続けるか何か?
BR、 ユリヤ
これは関連する投稿http://stackoverflow.com/questions/4635833/ – yuliya
私はファイルをスラップし、ブロックにマッチします。あなたはちょっと醜いlinecountingで混乱する必要はありませんそのように –
多分あなたは正しいですが、私はコードの一部でそれを行うことを好むだろう – yuliya