정규식 preg_match 조건

정규식 preg_match 조건

QA

정규식 preg_match 조건

답변 1

본문

$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";

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 18
© SIRSOFT
현재 페이지 제일 처음으로