특정문자로만 된 정규식을 구하려면 어떻게 해야할까요? > 질문&답변

본문 바로가기
사이트 내 전체검색

질문&답변

DreamPHP.com에서 다루는 내용(PHP, 프로그램, 고전)에 대해서만 질문 남겨주세요.
기타 질문은 PHP스쿨의 아래 성격에 맞는 게시판에 올리면 됩니다.
리눅스/서버/설치/설정 ,  Mysql/Oracle/Query/DB ,  PHP/함수/API/프레임웍 ,  HTML/JS/CSS/jQuery/Ajax
모바일앱/하이브리드앱 ,  ASP/JSP/기타개발관련 ,  개발을 제외한 일반질문

특정문자로만 된 정규식을 구하려면 어떻게 해야할까요?

페이지 정보

작성자 마술사스 댓글 7건 조회 342회 작성일 18-02-28 11:10

본문

▶ PHP스쿨 > Q&A > PHP관련/함수/프레임웍 - https://phpschool.com/link/qna_function/456682

예를들어서 값이

사과||바나나||
||||
||
||||||
딸기||포도||배||

이렇게 되어있을 때
||이거로만 되어있는
||||
||
||||||

이거에 대해  뽑아내려고 하는데
정규식을 어떻게 해야할까요

댓글목록

쥬리엘님의 댓글

쥬리엘 작성일

$a = <<<TXT
사과||바나나||
||||
||
||||||
딸기||포도||배||
TXT;

preg_match_all('/^[\|\|]+$/m', $a, $m);
print_r($m); // Array ( [0] => Array ( [0] => |||| [1] => || [2] => |||||| ) )

BiHon님의 댓글

BiHon 작성일

음…. 쥬리엘 님 패턴으로 결과 나와요? 이상하네요.
아무튼 다른 패턴으로 추가 설명까지 추가해 남깁니다.

* 정규식 공부할 분들은 송효진 님의 게시물 참고
- https://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&sca=&sfl=wr_subject&stx=pcre&sop=and

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

$text = '사과||바나나||
||||
||
||||||
딸기||포도||배||';
preg_match_all('/^\|+(?:\s*)$/m', $text, $matches);
echo '<XMP>'.print_r($matches, 1).'</XMP>';

↓ 실행 결과

Array
(
    [0] => ||||
    [1] => ||
    [2] => ||||||
)

/ / 구분자
^ 시작
\| 파이프 문자
\|+ 한 글자 이상
\s* 공백 관련 문자 [HT(9), LF(10), FF(12), CR(13), Space(32), NBSP(A0) 등등] 없거나 있거나
(?:...) 캡처 안함
$ 끝
/m 멀티라인

즉, 파이프 문자로 시작해 줄바꿈으로 끝나는 모든 줄입니다.

쥬리엘님의 댓글

쥬리엘 작성일

로컬 환경이 없어서 http://phpfiddle.org/ 해당 사이트에서 테스트 해봤을땐 정상이였는데...
뭔가 환경이 다른가보네요;;

마술사스님의 댓글

마술사스 작성일

감사합니다. 공부해서 한번 진행해보겠습니다!

BiHon님의 댓글

BiHon 작성일

아. 그렇군요. 온라인에서 구해보는 것과 차이가 나는군요.

- https://regex101.com/
:
여기나 저기나 로컬과 차이나네요.
온라인으로만 점검하고 안심하면 안 되겠네요.

쥬리엘님의 댓글

쥬리엘 작성일

그러게요 편의상 간단한 코드는 온라인에서 테스트 해보는데 신뢰성이 많이 떨어지네요;;

WikixUnknown님의 댓글

WikixUnknown 작성일

온라인쪽은 javascript라서 좀 틀린걸로 알고 있습니다.
언어에 따라 조금씩 차이나는 부분때문인걸로....

회원로그인


Copyright © 1998~2019 DreamPHP.com All rights reserved.