답변:
Perl (및 PCRE)에서는 너비 가 0 인 lookbehind 를 통해 달성 할 수 있습니다 .
(?<=funnyword).*$
"funnyword"와 일치하지만 일치의 일부로 소비하지 않습니다. 이것들은 lookbehind의 고정 길이 텍스트에서만 작동합니다. 부정적인 lookbehinds ( (?<!...)
)를 사용하여 일부 텍스트가 존재하지 않도록 지정할 수도 있습니다 .
합리적으로 최신 버전의 Perl을 사용하는 \K
경우 거의 동일한\zs
버전을 사용합니다.
funnyword\K.*$
\K
지금까지 일치 한 모든 것을 버리고 그 시점부터 계속 일치합니다. 이전 부분 \K
은 고정 길이 일 필요는 없습니다. 이것은 현재 PCRE에도 있지만 어떤 버전인지 확실하지 않습니다.
\ze
대신 너비가 0 인 lookahead를 사용하여 달성 할 수 있습니다 (?=...)
. 이 패턴 은 고정 길이 일 필요 는 없습니다 .
나오지도 사용이 때문에 BREs를 POSIX , 더 lookaround이 없습니다 . 그러나이 경우 일반적인 캡처 그룹을 사용하여이를 쉽게 시뮬레이션 할 수 있습니다.
sed -e 's/\(funnyword\).*$/\1otherword/'
긍정적 인 예견을 위해 동일한 작업을 수행 할 수 있습니다. 더 복잡한 요구 사항이 있으면 Perl 또는 다른 방법을 찾아야 할 수도 있습니다.