제 질문은 각각의 선택을 반복적으로하고 싶지 않다는 점을 제외하고는 this과 매우 비슷합니다.Regex : 반복을 허용하지 않는 임의의 순서로 선택 사항을 매치합니다.
예제 : 정규식 (A와 B는 복잡 할 수 있으며 이러한 과도하게 단순화된다) 다음의 문자열과 일치해야 :
XAB
XBA
XA
XB
X
일치하지 수 XAA, XBB, XABA, XABB, XBAA
여기는 내가 지금까지 무엇을 가지고 :
/(X)(?:(A)|(B)){0,2}$/
이것은 반복 (예 : XAA 등)을 허용하고, PHP에서 XB에 문제를 일으킬 것 같다 하늘의 배열 요소
편집 : X, A 및 B (사용 가능한 경우)의 실제 값을 가져와야 함을 잊어 버렸습니다. 전체 문자열과 일치하는 것이 아닙니다.
당신은 기본적으로 할 수있는 말을하는지 :
는 ("아무것도 군 다음에하지"즉) 때문에 부정적 예측의 그룹 A는 문자열에 한 번만 존재하는 강제 'A' 또는'B'를 두 번 이상 매치하지 마십시오. 왜 그저 검사 만하고 정규식을 버리지 않으시겠습니까? '(substr_count ($ 문자열, 'A') 2 =>) 에코 경우 '오류!'; 당신이 그것을 고수하려는 경우 여기에' –\g<A> (?! .* \g<A>)
는 정규식 데모의 ... http://regex101.com/r/kD2fA1 –