나는 다음과 같은 정규식 그렙 실행하려고 해요! ""...어떻게 정규 표현식을 bash에서 제대로 탈출 할 수 있습니까?</p> <pre><code>(?<!key:)(?<!orKey:)(?<!isEqualToString:)@"[A-Za-z0-9]*" </code></pre> <p>첫 번째 시도 :
$ grep -r -n -H -E (?<!key:)(?<!orKey:)(?<!isEqualToString:)\@\"[A-Za-z0-9]*\" ./
-bash: !key: event not found
확인을, 그래서의 탈출 할 필요가
$ grep -r -n -H -E (?<\!key:)(?<\!orKey:)(?<\!isEqualToString:)\@\"[A-Za-z0-9]*\" ./
-bash: syntax error near unexpected token `('
좋아, 그래서 내가합니다 ... "("의 탈출을 필요
$ grep -r -n -H -E \(?<\!key:\)\(?<\!orKey:\)\(?<\!isEqualToString:\)\@\"[A-Za-z0-9]*\" ./
-bash: !key:)(?: No such file or directory
좋아, 그럼 문자열을 인용해야합니까?
$ grep -r -n -H -E '\(?<\!key:\)\(?<\!orKey:\)\(?<\!isEqualToString:\)\@\"[A-Za-z0-9]*\"' ./
반환 결과가 없습니다 ...하지만 나는 음의 모양 숨김 주장이없는 간단한 정규식을 시도하고, 그것은 ... 나는이 정규식과 TextWrangler 잘 사용 실행하고이 작업을 수행 그래서 여기서 명령 줄에서 뭔가 잘못하고 있다고 가정 할 수 있습니다.
편집: 나는 -p
옵션을 사용하는 경우
가 :
$ grep -r -n -H -E -P '\(?<\!key:\)\(?<\!orKey:\)\(?<\!isEqualToString:\)\@\"[A-Za-z0-9]*\"' ./
grep: conflicting matchers specified
이 파일 내용의 예는 일치해야한다 :
NSString * foo = @"bar";
파일 내용의 예를하는 안 경기 :
return [someDictonary objectForKey:@"foo"];
일반적으로 '...'로 인용하는 것이 탈출하는 것보다 훨씬 바람직합니다. 이스케이프 처리하면 정규 표현식이 잘 리거나 덜 직관적이게됩니다. – smci