3

どのプログラミング言語でも、特定のファイルまたは文字列の行数を効率的に制限する方法を知っていますが、それはここでは問題ではありません。ただし、この場合、正規表現でこれを実行しようとしています。このパターンでは、\n 改行文字のみを使用しています。\r その他キャリッジリターン等は必要ありません。

(?:(?:\n)?[^\n]*){0,3}

上記の正規表現は次のように説明されています。

(?:       group, but do not capture (between 0 and 3 times)-
 (?:      group, but do not capture (optional)
  \n      '\n' (newline)
 )?       end of grouping
 [^\n]*   any character except: '\n' (newline) (0 or more times)
){0,3}    end of grouping

この正規表現を次のような文字列で使用すると..

In this line is foo bar and baz
In this line is bar and foo
In this line is baz and bar
In this line we have foo
In this line we have bar and foo and baz
In this line we have foobar
In this line we have foo
In this line we have foo and bar
In this line we have bar and baz and foo

これにより、問題のない行が返さ1-3れます。

上記の文字列では7、 、8、およびすべての行に、文字列の最初、中間、または最後にある9単語がすべて含まれています。foo

ここで私の質問は、文字列を検索し、単語の接頭辞としてではなく、別の単語に結合されたものではなく、3同じキーワードをすべて含む行のテキスト行を検索するために、先読みまたは後読みを実装するにはどうすればよいかということです。fooしたがって、行のみに一致し、 には一致7-9しません1-6

4

1 に答える 1