単語FOOを持ち、同じ行の後にBARを持つフレーズのすべてのインスタンスを見つける必要があります。単語の先頭と次の単語を検索する正規表現
それは同じようにフォーマットされています[asdf_123/FOO_sdfsdsadasff.x] BAR 123
単語FOOを持ち、同じ行の後にBARを持つフレーズのすべてのインスタンスを見つける必要があります。単語の先頭と次の単語を検索する正規表現
それは同じようにフォーマットされています[asdf_123/FOO_sdfsdsadasff.x] BAR 123
方法についてFOO.*BAR
。それは動作しますか?
シンプル
FOO.*BAR
言語はperlのあることが判明した後、おそらく
アップデートを行います
#!/usr/bin/perl
while (<DATA>) {
print if $_ =~ /FOO.*BAR/;
}
__DATA__
[asdf_123/FOO_sdfsdsadasff.x] BAR 123
illegal string
FOO without
without BAR
出力:
[asdf_123/FOO_sdfsdsadasff.x] BAR 123
ニースとシンプル:それは 'FOOBAR'も見つけるでしょう。ユーザーが少なくとも1つの文字を分離する必要があると主張する場合は、「FOO。+ BAR」 –
.*FOO.*BAR.*
は正常に動作するはずです。
に注意してください。先頭の '。*'は、これをあまり効率的にしません。正規表現エンジンは最初に(貪欲なマッチのために)行の最後まで実行され、最初の 'F'を見つけるまでバックトラックし、' O'などを探します。最初の 'を削除します。 * 'を探し、最初から文字列を調べてFOOを見つける。 "BAR"の前に "。*"のところに "greedy match"ヒットがありますが、それについてはあまりできません。 –
「フレーズ」を構成するものについて少し疑問がありますが、
ですが、ここではこれを行う方法があります。
use strict;
use warnings;
my @samples = (
'asdf_123/FOO_sdfsdsadasff.x BAR 123',
'FOOBAR BARFOO /ssBARaa',
'asdf FOOkkBAR zzFOO BAR',
);
for (@samples)
{
my @phrases =/(\S*FOO\S*)\s (?=.*BAR) /xg;
print "'$_'\n" for @phrases;
}
__END__
出力:
'asdf_123/FOO_sdfsdsadasff.x'
'FOOBAR'
'BARFOO'
'FOOkkBAR'
'zzFOO'
言語? – raym0nd
はperlのためにそれを必要とします –