正则表达式找到单词和下一个单词的开头

时间:2011-07-26 19:06:17

标签: regex perl

需要查找具有单词FOO的短语的每个实例,并且在同一行之后的某个时间段有BAR。

格式如:[asdf_123/FOO_sdfsdsadasff.x] BAR 123

4 个答案:

答案 0 :(得分:1)

一个简单的

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

答案 1 :(得分:0)

FOO.*BAR怎么样;这有用吗?

答案 2 :(得分:0)

.*FOO.*BAR.*

应该可以正常工作。

答案 3 :(得分:0)

关于什么构成“短语”,这个问题有点含糊不清 但这可能是一种方法。

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'