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

ここ ?* 量指定子を非貪欲にします。

パールコード:

#!/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 に答える