Yanıtlar:
Perl (ve PCRE) 'de bu, sıfır genişlikli bir gözbebek ile elde edilebilir :
(?<=funnyword).*$
"funnyword" ile eşleşiyor, ancak maçın bir parçası olarak tüketmiyor. Bunlar yalnızca görünüm arkasındaki sabit uzunlukta metinlerle çalışır. (?<!...)
Bazı metinlerin orada olmadığını belirtmek için negatif lookbehinds ( ) yöntemini de kullanabilirsiniz .
Perl'in herhangi bir makul versiyonunda, kullandığınız \K
için neredeyse tam bir alternatiftir\zs
:
funnyword\K.*$
\K
şu ana kadar eşleşen her şeyi atar ancak bu noktadan itibaren eşleşmeye devam eder. Önceki bölümün \K
sabit uzunlukta olması gerekmez. Bu da şimdi PCRE'de , ancak hangi sürümde geldiğinden emin değilim.
\ze
kullanarak, sıfır genişlikli bir önden okuma ile elde edilebilir (?=...)
. Bu desen değil , sabit uzunlukta olması gerekir.
Sed kullanımları nedeniyle Bres POSIX , hiçbir etrafa bakma yoktur . Bu durumda, sıradan bir yakalama grubu kullanarak oldukça kolay bir şekilde simüle edebilirsiniz:
sed -e 's/\(funnyword\).*$/\1otherword/'
Pozitif ileri gitmek için de aynısını yapabilirsiniz. Gerçekten daha karmaşık bir gereksiniminiz varsa, Perl veya başka bir yaklaşıma bakmanız gerekebilir.