1

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

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

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

我想找到所有以 . 开头Henry和结尾的段student。这意味着,在上面的例子中,我们找到了 2 个段:

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

不是:

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

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

编辑:我对正则表达式很陌生,我尝试了整整一周的时间,但没有成功。我试过的一些愚蠢的案例:

/Henry.*student/

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

/Henry[^s]*student/
4

3 回答 3

3

使用惰性修饰符:

/Henry.*?student/

在此处查看实际操作:http ://regexr.com?36d1r

于 2013-09-18T14:41:26.390 回答
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'
        ];
于 2013-09-18T16:05:41.487 回答
-2

这应该这样做:

/Henry.*student/
于 2013-09-18T14:53:49.747 回答