답변:
에서 vim
다음과 같이 할 수 있습니다.
/index\(\.php\)\@!
자세한 내용을 보려면 명령 모드에서 다음을 시도하십시오 :h \@
.
\@! Matches with zero width if the preceding atom does NOT match at the
current position. /zero-width {not in Vi}
Like '(?!pattern)" in Perl.
Example matches
foo\(bar\)\@! any "foo" not followed by "bar"
a.\{-}p\@! "a", "ap", "aap", "app", etc. not immediately
followed by a "p"
if \(\(then\)\@!.\)*$ "if " not followed by "then"
\@<!
\(some\)\@<!thing
일치 하지만 . thing
everything
nothing
something
(?!\.php)
perl regexp 연산자입니다. less
일반적으로 시스템의 POSIX regexp API를 사용하므로 일반적으로 GNU 시스템에서 GNU 확장 정규식은 정규식을 vim
사용 vim
합니다.
에서는 vim
이미 cuonglm 의해 도시 된 바와 같이, 등가의 index(?!\.php)
것 index\(\.php\)\@!
또는 \vindex(\.php)@!
.
의 경우 less
컴파일 타임에 정규식 라이브러리 / API를 선택하고 그 결과 사용할 정규 표현식 유형을 선택할 수 있습니다.
--with-regex={auto,gnu,pcre,posix,regcmp,re_comp, regcomp,regcomp-local,none} Select a regular expression library auto
그러나 기본적으로 less
POSIX regcomp
를 REG_EXTENDED와 함께 사용 하므로 시스템의 확장 정규 표현식을 얻을 수 grep -E
있습니다.
GNU 확장 정규 표현식에서는 뒤를 닮거나 앞을 내다 보는 연산자가 없습니다.
어려운 방법으로 할 수 있습니다.
index($|[^.]|\.($|([^p]|p($|([^h]|h($|[^p]))))))
로 키를 less
사용하여 ( )가 &
포함 된 행을 필터링 한 다음 ( ) 을 검색 할 수 있습니다. (을 포함하는 행에 나타나는 다른 인스턴스는 여전히 그리워합니다 ).index.php
&!index\.php
index
/index
index
index.php
less
사용 하는 정규식 라이브러리 는 컴파일 된 시간에 달려 있다고 생각합니다 .
less
하여 사용 여부를 확인할 수 있습니다 . 그러나 다른 도서관과 함께 확인하는 방법을 알고 있습니까? PCRE
ldd $(which less)
less --version
.
less --verion
만 인쇄합니다 less 444
.