3

preccedで定量化を使用すると、このエラーが返されます。複数の例を参照してください。

printf 'Joe Satriani\nWhitney Houston\n' | grep -Poi '(?<=J\w)[\w\s]+'
e Satriani

printf 'Joe Satriani\nWhitney Houston\n' | grep -Poi '(?<=J\w+)[\w\s]+' 
grep: lookbehind assertion is not fixed length

printf 'Joe Satriani\nWhitney Houston\n' | grep -Poi '(?<=J\w{2})[\w\s]+' 
Satriani

preccedで定量化を使用できませんか?

4

1 に答える 1

5

Perl では、後読みで照合できるすべての文字列は同じ長さでなければなりません。どうやら、それはあなたのgrepツールと同じです。

Perl では、キャプチャを使用して問題を解決できます。

say $1 if /J\w+\s+(\w[\w\s]*)/;

Perlでは\K、置換を行うときに同様の問題に対処するのに役立つことがよくあり、それgrepもサポートされているようです!

$ printf 'Joe Satriani\nWhitney Houston\n' | grep -Poi 'J\w+\s+\K\w[\w\s]*'
Satriani

私が感銘を受けた!

于 2012-06-09T05:00:51.623 に答える