정규식 preg_match 조건

정규식 preg_match 조건

QA

정규식 preg_match 조건

본문

$tmp ="abc|def++|ghi";

preg_match("/\bdef\b/i",$tmp)

위 조건으로는 'def'값이 있기 때문에 매칭됩니다. 하지만 저는 '|'기호 사이에 있는 값에서 순수하게 'def'값일때만 매칭하고 싶습니다. 즉 'def++'은 매칭되지 않았으면 합니다.

정규식을 어떻게 짜야 할까요?

 

조건 : 
-찾으려는 문자열이 기호가 없는 순수 문자여야함
-문자 앞뒤로 '|'가 붙거나 앞이나 뒤에 한곳에는 반드시 있어야 함
가능할까요? 두번째 조건때문에 불가능할까요?

 

+++공부하다보니 다음과 같은 정규식으로 좁혀졌는데요,

(\|\b[a-z]+\b)$|^(\b[a-z]+\b\|)|(\|\b[a-z]+\b\|)

이보다 더 줄일 수 있을까요??

이 질문에 댓글 쓰기 :

답변 1

이게 원하시는건지 모르겠지만

다음 패턴을 사용해 테스트해 보시죠.

 

$tmp ="|abcz|def|ghi";
$pattern = "#(\|?\b[a-z]+\b\|?){3}$#i";

if(preg_match($pattern, $tmp)) echo "OK";
else echo "No";

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

회원로그인

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