如何找到包含开头和结尾字符串的段?

时间:2013-09-18 14:40:39

标签: regex

我想使用正则表达式来查找开头是给定字符串的所有段,结尾是另一个给定的字符串。

例如,我有字符串要查找:

Henry is a good student. And friends of Henry are also good students.

我希望找到以Henry开头并以student结尾的所有细分。这意味着,通过上面的例子,我们找到了两个部分:

亨利是个好学生亨利的朋友也是好学生

亨利是个好学生。亨利的朋友也是好学生

所有编程语言都可以。我只需要正则表达式。

编辑:我是正常表达的新手,我试了整整一个星期才发现但是没有用。我试过一些愚蠢的案子:

/Henry.*student/

/Henry((?!student)*)student/

/Henry[^s]*student/

3 个答案:

答案 0 :(得分:3)

使用延迟修饰符:

/Henry.*?student/

在此处查看:[{3}}

答案 1 :(得分:1)

尝试以下正则表达式:

m/Henry.*?student/g

在这?使*量词非贪婪。

Perl代码:

#!/usr/bin/env perl

use warnings;
use strict;
use Data::Dumper;

my $text="Henry is a good student. And friends of Henry are also good students.";
my @matches = $text=~ m/(Henry.*?student)/g;
print Dumper \@matches;

输出:

$VAR1 = [
          'Henry is a good student',
          'Henry are also good student'
        ];

答案 2 :(得分:-2)

这应该这样做:

/Henry.*student/