정규식 중첩 조건문에 대해서 궁금한점이 있어서 질문남깁니다.


정규식을 공부하다가 궁금한점이 있어서 질문 남깁니다.

해시코드에서 검색을 해보니 공부하기 좋은사이트가 있어서 학습중에 있습니다.

http://regexr.com/

위의 사이트에서 여러가지 테스팅을 해보고 있는데, 정규식은 일반적인 프로그래밍과는 다른개념이라 의문이 생기기에 이렇게 질문글을 올립니다.

C언어나 python과 같은 프로그래밍들은 조건문을 중첩하기 위해서 if문을 중첩해버리면 간단하게 해결됩니다.

하지만 정규식의 경우 표현형태이기때문에 중첩 조건문이 되는지 의문이더군요.

예를 들자면 위에 링크된 사이트를 들어가면 처음 나오는 예제의 경우 대문자로 시작하는 단어들을 찾아서 필터링 하는 정규식입니다.

여기서 제가 원하는건 [A-Z]로 되어있는 조건식으로 나온 결과값에서 'E'로 시작하는 단어만 제외하는 중첩조건문을 정규식형태로 구현해보고 싶습니다.

C언어나 python이였다면 자연어 느낌으로

if( text == [A-Z]){ if( text != [E]){ 필터링되어 나오는 값 } }

이런식으로 처리하면 될거같은데 정규식형태가 되니까 표현하기 어렵더군요.

사실 정규식은 표현을 하기 위한 개념이기에 중첩조건문이 되는지도 의문이고요.

살짝 드는 생각으로는 파이썬의 람다개념이 비슷한개념이 아닐까도 생각은 해봅니다만 아직 제가 람다개념을 제대로 숙지하지못해서 적용시키기 어렵더군요.

예를 들자면

전기총 화학 생물(물리포함) 전기 전기총 화학 생물 물리 미포함 전기총 화학 생물 우주 전기총 화학 생물 우주전기총

해당 문장에서

['전기', '생물'라는 단어가 포함되고 그 중에서 '물리'라는 단어가 포함되지 않은 문장]

을 한줄의 정규식으로 구하고 싶습니다.

(.(전기).)

이런식으로 표현하면 ''전기'라는 단어가 포함된 문장을 구할수는 있습니다.

그러나 해당 단어가 포함된 문장을 제외하는 방법이 어렵네요.

질문을 정리하자면

'정규식표현으로 중첩조건문을 구현할 수 있는가? 할 수 있다면 한줄로 어떻게 표현하면 되는가?'

입니다.

다른 고수분들의 조언 부탁드립니다.

  • 2017년 10월 12일에 작성됨
    파이썬, R, 어셈블리에 관심있습니다.

조회수 59


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close