Perlでキャプチャされたグループを取得する方法

user7347934

私は現在、人と人との関係を検出するための簡単なスクリプトに取り組んでいます。$ npを固有名詞の正規表現として定義します。私の最初のタスクでの目標は、それらの間の単語数が固定値より少ない別の固有名詞の左側に表示されるすべての固有名詞を見つけることです。私は次のコードを書きました:

$/ = '';

my $PM = qr{\b[A-Z][\w-]*\w};
my $de = qr{d[aoe]s?};
my $s = qr{[\n ]};
my $np = qr{$PM (?: $s $PM | $s $de $s $PM )*}x;

while(<>){
  while(/($np)/g){
    print("$1 : ");
    my @x = m/(?=(?: $s+ (?: [\w-]+ | ($np)) ){1,7})/gx;
    my $y = join(", ", @x);
    print("$y\n");
  }
}

ファイル内のすべての固有名詞と、それぞれについて、ウィンドウにある固有名詞が出力されることを期待していました。ただし、これは発生していません。どうすれば思い通りに動作させることができますか?

PS:私はPerl初心者です

編集:一部の人々は、期待される入力と出力のサンプルを追加することを推奨しました。次のテキストのファイルがある場合

John asked Mary to meet Anna.

次に、スクリプトを印刷します

John : Mary, Anna
Mary : Anna
Anna :

ただし、現在の状態では、コンマが無限ループで出力されます。

キャッシュロー

$_2回目の一致を行った後、一致の位置が再び変更されるため、無限ループが発生します。これを回避するために、一致する前に名前付き変数に割り当てることができます。

while( <> ) {
    my $line = $_;
    while( $line =~/($np)/g ) {
        ...
    }
}

詳細については、Perlおよびpos()での正規表現の使用を参照てください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

キャプチャされたグループをSelect-Stringから取得する方法は?

分類Dev

キャプチャされたすべてのグループをJavaで取得する

分類Dev

キャプチャされたグループから値をプルする

分類Dev

on( 'click')キャプチャでネストされた値を取得する方法

分類Dev

Pythonで繰り返されるグループをキャプチャする

分類Dev

N回まで繰り返されるグループをキャプチャする方法は?

分類Dev

Python正規表現:f文字列でキャプチャされたグループを使用する

分類Dev

str_replace / stri_replaceでキャプチャされたグループを使用する-stringivs stringr

分類Dev

別のセクションに到達するまでキャプチャされたグループを取得する正規表現

分類Dev

複雑なgolang regexpキャプチャで複数のグループをキャプチャする方法

分類Dev

Perlでvcardグループをキャプチャするための正規表現

分類Dev

Perl:構造化された方法で複数の正規表現キャプチャを取得するにはどうすればよいですか?

分類Dev

javaregex-繰り返されるグループをキャプチャする

分類Dev

キャプチャされたグループをPython正規表現にサブバックする最良の方法は何ですか?

分類Dev

Rubyでキャプチャしたグループを置き換える方法

分類Dev

postgresql regexp_replace:キャプチャされたグループを評価された式に置き換える方法(キャプチャグループに整数値を追加する)

分類Dev

複数の一致があるJavaScript正規表現でキャプチャされたグループのみを返す方法

分類Dev

グループ内で代替キャプチャを使用するPerlRegEx非キャプチャグループ

分類Dev

Perlの一致出力全体でキャプチャグループを強調表示する方法(たとえば、角かっこで囲みます)

分類Dev

RegExを使用して、キャプチャされた2つのグループを比較できます

分類Dev

グーグルキャプチャを確認する方法

分類Dev

キャプチャされたグループを分割すると、re.sub()になります

分類Dev

awkまたはgrepでグループをキャプチャする

分類Dev

Raku / Perl6:一致方法をキャプチャグループに制限するにはどうすればよいですか?

分類Dev

Pythonでキャプチャされたグループに対する文字列操作

分類Dev

キャプチャされていないグループからテキストの一致しない部分をすべて取得する方法

分類Dev

Scalaでのみキャプチャグループを小文字にする方法

分類Dev

正規表現Javascriptでグループをキャプチャする方法は?

分類Dev

Javascript正規表現でグループをキャプチャする方法は?

Related 関連記事

  1. 1

    キャプチャされたグループをSelect-Stringから取得する方法は?

  2. 2

    キャプチャされたすべてのグループをJavaで取得する

  3. 3

    キャプチャされたグループから値をプルする

  4. 4

    on( 'click')キャプチャでネストされた値を取得する方法

  5. 5

    Pythonで繰り返されるグループをキャプチャする

  6. 6

    N回まで繰り返されるグループをキャプチャする方法は?

  7. 7

    Python正規表現:f文字列でキャプチャされたグループを使用する

  8. 8

    str_replace / stri_replaceでキャプチャされたグループを使用する-stringivs stringr

  9. 9

    別のセクションに到達するまでキャプチャされたグループを取得する正規表現

  10. 10

    複雑なgolang regexpキャプチャで複数のグループをキャプチャする方法

  11. 11

    Perlでvcardグループをキャプチャするための正規表現

  12. 12

    Perl:構造化された方法で複数の正規表現キャプチャを取得するにはどうすればよいですか?

  13. 13

    javaregex-繰り返されるグループをキャプチャする

  14. 14

    キャプチャされたグループをPython正規表現にサブバックする最良の方法は何ですか?

  15. 15

    Rubyでキャプチャしたグループを置き換える方法

  16. 16

    postgresql regexp_replace:キャプチャされたグループを評価された式に置き換える方法(キャプチャグループに整数値を追加する)

  17. 17

    複数の一致があるJavaScript正規表現でキャプチャされたグループのみを返す方法

  18. 18

    グループ内で代替キャプチャを使用するPerlRegEx非キャプチャグループ

  19. 19

    Perlの一致出力全体でキャプチャグループを強調表示する方法(たとえば、角かっこで囲みます)

  20. 20

    RegExを使用して、キャプチャされた2つのグループを比較できます

  21. 21

    グーグルキャプチャを確認する方法

  22. 22

    キャプチャされたグループを分割すると、re.sub()になります

  23. 23

    awkまたはgrepでグループをキャプチャする

  24. 24

    Raku / Perl6:一致方法をキャプチャグループに制限するにはどうすればよいですか?

  25. 25

    Pythonでキャプチャされたグループに対する文字列操作

  26. 26

    キャプチャされていないグループからテキストの一致しない部分をすべて取得する方法

  27. 27

    Scalaでのみキャプチャグループを小文字にする方法

  28. 28

    正規表現Javascriptでグループをキャプチャする方法は?

  29. 29

    Javascript正規表現でグループをキャプチャする方法は?

ホットタグ

アーカイブ