vimでは、\zs
原子を使って「本当にここからレースが始まります」と言うことができます。
:%s/funnyword\zs.*$/otherword/
sedやPerlに対応するものはありますか?
答え1
Perl(およびPCRE)では、次のように達成できます。幅0のレビュー:
(?<=funnyword).*$
「funnyword」と一致しますが、一致に含まれません。これは、バックビューの固定長テキストにのみ適用されます。(?<!...)
一部のテキストが存在しないことを指定するには、負の反転()を使用することもできます。
Perlの最新バージョンでは\K
ほぼ完全な交換\zs
あなたがそれを使うとき:
funnyword\K.*$
\K
これまでに一致したすべてのアイテムを削除し、その時点から一致を続けます。前部は\K
固定長である必要はありません。これは現在PCREにもありますしかし、バージョンが何であるかよくわかりません。
\ze
(?=...)
これは、.thatパターンを使用して幅0のプレビューで達成できます。いいえ固定長でなければなりません。
sedが使うからPOSIX BRE、見回すことなく。ただし、この場合は通常のキャプチャグループを使用してかなり簡単にシミュレートできます。
sed -e 's/\(funnyword\).*$/\1otherword/'
肯定的な見通しを持って同じことをすることができます。より複雑な要件がある場合は、Perlまたは他のアプローチを検討できます。