답변 1개
채택된 답변
+20 포인트
6년 전
[@sinbi] 이것이 @sinbi 이것으로 바꿨다면
preg_replace("/(\[@[^\]]+\])/iUs", 이것을
preg_replace("/(@[^\]]+)/iUs", 이렇게 하시면 되겠네요.
그리고
(\[@[^\]]+\])
먼저 소괄호는 그 안의 정규식과 매치가 되는 문자열을 구하겠다는거고
\[ 는 [ 이것이 정규식에서 의미있는 메타문자기 때문에 이스케이프 시키기 위해 앞에 \를
붙인겁니다. 뒤에 \] 이것도 마찬가지.
그리고 [^\]]+ 이것은 \가 아닌 문자가 하나 이상 [과 ] 사이에 있어야 한다는 걸 의미합니다.
참고로 정규식에서 [과 ]은 그 사이에 있는 문자 하나를 취한다는거고 밖의 +는 바로 앞 문자가 하나 이상 이어야 한다는 의미
그런데 [과 ] 사이에 예를 들어 [^\]] 이렇게 ^가 맨 앞에 붙게 되면 그 사이에 있는 문자들 외의 문자가 와야 한다는걸 의미합니다.
즉 맨끝에 ]이 오기 때문에 그 사이에는 ] 아닌 문자가 오고 있죠?
그러니 그 문자(]) 외의 문자를 취하기 위해 그렇게 처리한 것입니다.
설명할려니 무지 답답합니다.
구글링 해서 직접 이해하시면 쉽습니다 ㅎㅎ
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
s
sinbi
6년 전
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
( ^ ______ ~ ) ===b