XETOWN

질문/답변

웹에 관련된 질문과 답변을 나눌 수 있습니다.

코어 분석중에 (?: 과 같은 패턴이 나와서 관련 내용을 찾아서 읽어봤습니다.

      https://secure.php.net/manual/en/regexp.reference.subpatterns.php

내용을 보면,

           For example, if the string "the red king" is matched against the pattern the ((red|white) (king|queen)) the captured substrings are "red king", "red", and "king", and are numbered 1, 2, and 3.

  ....

 For example, if the string "the white queen" is matched against the pattern the ((?:red|white) (king|queen)) the captured substrings are "white queen" and "queen", and are numbered 1 and 2.

 

이렇게 나와있었습니다. 그런데 여기서 좀 의아했던게, 저렇게 ((red|white) (king|queen)) 이라면

red king만 매치가 돼야 하는게 아닌가라는 생각이 들었습니다. red와 white 중 하나, king과 queen중 하나가 존재하는 문자열만 매칭시켜야 하는것 아닌가 라는 생각이 들어서였는데, regexr.com 에서 테스트한 결과도 그렇더군요. 그래서 결론 내리기를 php에서 특수하게 인정하는 패턴인가 보다.. 했습니다.

근데 혼자 결론내리기가 좀 찝찝해서 다른 분들의 의견을 좀 듣고 싶었습니다. 회원님들의 지식 공유 부탁드립니다ㅎ

  • profile
    기진곰 2016.09.04 13:47:48

    정규식을 쓸 때 괄호로 묶은 부분은 모조리 $matches로 반환하고, 이중으로 괄호를 쓰면 이중으로 반환이 됩니다. 그러나 괄호 안에 ?:를 쓰면 그 부분은 반환하지 않습니다. 불필요한 데이터를 반환하지 않도록 하면 성능도 좋아지고 프로그래밍하기도 편해지거든요. 그 밖의 차이는 없어요. 정규식 작동 방식에도 아무 영향을 미치지 않습니다.

     

    그래서 위의 예제에서는 red king, red, king을 모두 각각 반환하지만 아래에서는 red|white 부분에 ?:를 붙였기 때문에 white는 별도로 반환하지 않고 white queen과 queen만 반환합니다. red나 white나 둘 중 아무거나 하나만 있으면 됐지, 실제로 red인지 white인지는 알 필요가 없다! 이런 경우에 쓰는 겁니다.

  • ?
    갸라 2016.09.04 13:55:45
    아.. 언제나 명확하십니다. 감사합니다!
  • profile
    구름이 2016.09.04 16:15:14
    감사합니다 또 하나 배워갑니다
  • ?
    갸라 2016.09.08 15:09:19
    넵ㅎ :)

List of Articles
번호 제목 글쓴이 날짜
2745 댓글수신표시 애드온 목록에서 동작하려고 하면....? 2 웹지기 2016.09.04
» xe core 분석중, php 정규표현식에 관련해서 질문드립니다. 4 갸라 2016.09.04
2743 도메인에 대해서 잘 아시는분? 12 NEX 2016.09.04
2742 아이피 노출 관련 10 오늘찌 2016.09.04
2741 게시글에 비밀번호 거는 법 3 데버 2016.09.03
2740 특정게시판만 원하는 이미지 노출 9 세희타운 2016.09.03
2739 [XECon + PHPFest 2014] Session 3-2 : ElasticSearch를 이용한 통합검색 구축방법 2 이성민 2016.09.03
2738 경험치 시스템 모듈 1 보고하비 2016.09.03
2737 이런걸 여기 여쭤봐도 될지 모르겠지만... 2 file 윤체리 2016.09.02
2736 라이믹스 ' 삭제된 댓글입니다' 표시기능 5 고라자 2016.09.02
2735 빵메뉴라는게 뭔가요? 4 file 데버 2016.09.02
2734 xe core 분석중, _replacePath 부분을 보는데 뭘 의미하는지 잘 모르겠네요 4 갸라 2016.09.02
2733 act 허용 애드온은 없나요? 5 기븐 2016.09.02
2732 $oDocument->getExtraEidValue('확장변수명') XE 어떤 버전 부터 지원하나요? 2 구름이 2016.09.02
2731 현재 보고 있는게시판의 주소를 가져오려고 하는데 이게 맞나요? 2 이성민 2016.09.02
2730 Document 모듈에서 비공개와 비밀의 차이점이 뭘까요... 3 과니 2016.09.02
2729 ssl 인증서 설치후 리다이렉트오류.. 2 뚜방 2016.09.02
2728 모듈의 info.xml 출력 하는 방법이 궁금합니다. 5 구름이 2016.09.01
2727 Cozy Home 레이아웃 관련 5 동시성 2016.09.01
2726 사이트 운영에 대해 고수님들께 조언을 구하고자 합니다. 8 RADIX 2016.09.01
Board Pagination Prev 1 ... 65 66 67 68 69 70 71 72 73 74 ... 207 Next
/ 207
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...