정규 표현식에서 (?s)의 뜻.


(?s)의 뜻을 계속 찾아봐도 나오지 않고, 어떤 뜻인지 모르겠네요. 정규 표현식에서 (?s)의 역할이 무엇인가요?


조회수 611


3 답변


좋아요
1
싫어요
채택취소하기

Singleline modifier네요.

제가 써 본 regex(정규표현식)에서는

/정규표현식/s

이렇게 modifier를 제일 뒤에 붙였었는데 괄호하고 물음표 다음에 써도 되나봅니다.

Single line modifier를 쓰면 .(all)에 new line이 포함됩니다.

Modifier는 정규표현식의 옵션정도로 생각할 수도 있겠을것 같아요.

  • 2016년 03월 13일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.


정규식의 .은 기본적으로 개행문자와는 매치가 되지 않습니다. 이것을 해제/설정하는 플래그가 s플래그입니다. (설정시에는 그냥 s를 사용하고, 해제시에는 (?-s) 처럼 -를 앞에 붙입니다)

따라서 code = re.compile("(?s)/\*.*?\*/") 라는 정규식 컴파일은 code = re.compile("/\*.*?\*/", java.util.regex.Pattern.DOTALL)과 같습니다.

참고(영문): http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#DOTALL



사용하는 배경을 알 수 있을까요? (?s)는 처음보는것 같네요. 괄호와 물음표의 조합이라면 (?P <name> regex) 조합인 capturing group는 본 적이 있는데요.

  • 2016년 03월 13일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

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

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