php 정규식 해석방법....

php 정규식 해석방법....

QA

php 정규식 해석방법....

본문

preg_replace("/(\[[^\]]+])/", "", $memo)

이런 내용의 정규식인데요
해석하면 [로 시작해서 ]로 끝나는 문자열을 없애라는 내용이라고 하시더라구요;;
그린데 왜 이렇게 나오는지 잘 모르겟네요;;

패턴이 /와 / 사이에 오는거랑 +는 한개라도 포함되어있으면 이라는 뜻인걸로 아는데;;
\는 왜붙고 [[는 왜 2개씩 쓰는지 같은게 이해가 안되네요;; ㅠㅠ
설명해주실분 없으신가요?? ㅠ

이 질문에 댓글 쓰기 :

답변 1

예를 들면
$memo = "ab[124ab c]]";
$memo=preg_replace("/(\[[^\]]+])/", "", $memo);
echo $memo; //결과 : ab]

즉, [124ab c]을 없애는 역할을 하죠.

(\[[^\]]+])은 (와) 사이의 패턴을 $memo에서 읽어 없애라는 표현이죠.
그런데 [와 ]는 정규식에서 의미를 갖는 기호 
예를 들어 [0-9]는 숫자 하나라는 의미를 갖죠.

그래서 그 문자 [과]의 문자 그 자체를 의미하게 하기 위해서 이스케이프문자 \를 앞에 붙이면
문자 자체를 나타내게 됩니다.
즉, \[124ab c\]은 124ab c 중 하나의 문자가 아닌 문자 그대로 [124ab c]을 나타내게 됩니다.

[^\]]+]은 [^\]]은 ]문자가 아닌 문자 하나와 매칭 그런데 +가 있으니 문자] 아닌 문자가 하나 이상 있고
문자]가 하나 더 붙었으니 
$memo = "ab[124ab c]]"; 에서 [124ab c]를 없애라는 의미이므로 
결과값은 ab]가 되게 됩니다.


답변을 작성하시기 전에 로그인 해주세요.
전체 44
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT