vim에서는 \zs
원자를 사용하여 "정말로 여기서부터 경주가 시작됩니다"라고 말할 수 있습니다.
:%s/funnyword\zs.*$/otherword/
sed나 Perl에 상응하는 것이 있나요?
답변1
Perl(및 PCRE)에서는 다음과 같이 달성할 수 있습니다.폭이 0인 검토:
(?<=funnyword).*$
"funnyword"와 일치하지만 일치 항목에 포함되지 않습니다. 이는 backview의 고정 길이 텍스트에만 적용됩니다. (?<!...)
일부 텍스트가 존재하지 않음을 지정하기 위해 음의 뒤돌아보기( )를 사용할 수도 있습니다 .
Perl의 최신 버전에서는\K
거의 완전한 교체\zs
당신이 그것을 사용할 때:
funnyword\K.*$
\K
지금까지 일치된 모든 항목을 삭제하고 그 시점부터 일치를 계속합니다. 앞부분은 \K
고정된 길이일 필요는 없습니다. 이것은현재 PCRE에도 있습니다, 그러나 버전이 무엇인지 잘 모르겠습니다.
\ze
(?=...)
이는 .that 패턴을 사용하여 너비가 0인 미리보기로 달성할 수 있습니다.아니요고정된 길이여야 합니다.
sed가 사용하기 때문에POSIX BRE,둘러보지 않고. 하지만 이 경우에는 일반 캡처 그룹을 사용하여 상당히 쉽게 시뮬레이션할 수 있습니다.
sed -e 's/\(funnyword\).*$/\1otherword/'
긍정적인 전망을 가지고 같은 일을 할 수 있습니다. 더 복잡한 요구 사항이 있는 경우 Perl이나 다른 접근 방식을 고려할 수 있습니다.