미리보기 assays를 사용하십시오. 당신이 문자열이 다른 문자열을 포함하지 않는 경우 검사 할 때
, 당신은 쓸 수 있습니다 :
/^this(?!.*substring).*word$/
:
/^(?!.*substring)/
당신은 또한 시작과 this
및 word
에 대한 라인의 끝을 확인해야합니다
여기 또 다른 문제는 문자열 찾기를하지 않으면 문장을 찾을 수 있다는 것입니다.
그래서 해결책은 다음과 같습니다 : 사용의
perl -e '
local $/;
$_=<>;
while($_ =~ /(.*?[.])/g) {
$s=$1;
print $s if $s =~ /^this(?!.*substring).*word[.]$/
};'
예 :
$ cat 1.pl
local $/;
$_=<>;
while($_ =~ /(.*?[.])/g) {
$s=$1;
print $s if $s =~ /^\s*this(?!.*regexp).*word[.]/i;
};
$ cat 1.txt
This sentence has the "regexp" word. This sentence doesn't have the word. This sentence does have the "regexp" word again.
$ cat 1.txt | perl 1.pl
This sentence doesn't have the word.
귀하의 규칙이 혼란 스럽거나 예상 한 결과물에 실수를 한 것입니다. 왜 "그리고"그리고 왜 "텍스트의 큰 조각." – sjakubowski
@sjakubowski "하위 문자열은 'this'로 시작하고 'word'로 끝납니다." – Mathletics
이 규칙은 혼란 스럽지만 정확합니다. 나는 구글에서 무언가를 찾는데 많은 시간을 보냈지 만 아무것도 발견하지 못했다. – Artem