2012-03-08 4 views
0

한 줄의 정규식이 가능한지 확실하지 않습니다. 특정 문장으로 문장을 찾고 싶습니다. 특정 문장에 문장이있을 때는 그렇지 않습니다.regex - 특정 문자열을 찾지 만 특정 문장에없는 경우 찾음

grep 'word'와 (과) 같습니다. 파일 | 그렙 -IV "특정 문장"

예 : 입력 : 이제 foo에와

foo는 여기

여기 안녕하세요 세계 foo는

는 foobar가

결과 s 출력 :

여기

안녕하세요 세계 foo는

는 foobar 바

와 여기가

foo는 문장은 '이제 foo는 바'때 hould 단어 '갑'이 아닌를 찾을 수

한 줄 정규식으로 가능합니까?

답변

1

당신은 할 수 :

말한다
^(?!bar with foo now).*?foo.*$ 

이제 foo는 바 "하지만,이" "거기에"foo는 "이 아닌 선을 일치".

그러나 한 줄에 하나씩 일치합니다. 그래서 가지고 있다면 :

안녕하세요, 내 foo는 foo입니다.

이는 전체 라인에 대해 한 번만 일치합니다 (각 foo에 대해 두 번, 반대로).

+0

답장을 보내 주셔서 감사합니다. 그것은 작동합니다! 이제 하나 이상의 문장을 추가 할 수 있습니까? 마치 내가 지금 foo가있는 bar와 여기에 다른 foobar와 같은 두 문장을 제외시키고 싶다면 어떻게 할 수 있습니까? – user1256045

+0

당신은'(?! bar with foo now)'대신에'(? foo now | foobar가있는 곳?)'을 할 것입니다. –

+0

^(? foo를 사용하여 지금). *? foo. * $를 시도하면 그다지 효과가 없습니다. 그래서 완전한 문장이어야합니까? 또한 나는이 정규식이 작동하지 않는 문장의 배열을 가지고있다! – user1256045

관련 문제