SOとGoogleでかなり検索した後、私は新しい質問を投稿することにしました。私はTextWranglerと協力して、複数行のパターンの最短一致を提供する正規表現を作成しようとしています。
基本的に、
ہے\tVM
は私が探している文字列です(品詞タグからタブ文字で区切られたアラビア語)。難しいのは、その文字列を含むすべての単一の文を検索したいということです。これが私がこれまでに持っているものです:
/(<Sentence id='\d+'>(?:[^<]|<(?!\/Sentence>))*ہے\tVM(?:[^<]|<(?!\/Sentence>))*<\/Sentence>)/
私が見ているファイルはCMLでエンコードされているので、私の質問の一部は、MAC用のCMLパーサーを知っている人がいるかどうかです。
もう1つの明らかな代替手段は、Perlスクリプトを作成することです。ここでも、簡単な解決策を示すアドバイスに感謝しています。
私の現在のスクリプトは次のとおりです。
use open ':encoding(utf8)';
use Encode;
binmode(STDOUT, ":utf8");
binmode(STDIN, ":utf8");
my $word = Encode::decode_utf8("ہے");
my @files = glob("*.posn");
foreach my $file (@files) {
open FILE, "<$file" or die "Error opening file $file ($!)";
my $file = do {local $/; <FILE>};
close FILE or die $!;
if ($file =~ /(<Sentence id='\d+'>(?:[^<]|<(?!\/Sentence>))*$word\tVM(?:[^<]|<(?!\/Sentence>))*<\/Sentence>)/g) {
print STDOUT "$1\n\n\n\n";
push(@matches, "$1\n\n");
}
}
open(OUTPUT, ">matches.txt");
print OUTPUT "@matches";
close(OUTPUT);