미채택 완료

정규식 preg_match 조건

2018-08-22 (수) 01:05:38 2,918

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

답변을 작성하려면 로그인이 필요합니다.