2010-04-13 1 views
5

목록의 각 문자와 한 번만 일치하는 PCRE 스타일 정규 표현식을 생성 할 수 있습니까?각 문자를 한 번만 정규식으로 사용 하시겠습니까?

예를 들어, "lrsa"문자가 있고에 대한 단어 목록을 일치하려고하면 (유효)는 "LAMS"와 일치하는거야

^[lrsa]*m[lrsa]*$ 

, 또한 "라마"(당신은 단지 하나의 "a"를 가지고 있기 때문에 우리의 목적에는 유효하지 않습니다). 당신의 편지 세트가 "lrsaa"라면, 당신은 "lamas"와 일치하기를 원할 것입니다.

정규 표현식을 사용할 수 있습니까? 프로그래밍 방식으로 처리해야합니까?

+0

이 원하는 것을 할 것''[lrsa]'동일합니다. – Gumbo

+1

맞아. 그게 내 문제 야. [lrsa] {4}로 제한 할 수 있지만 "lassa"와 여전히 일치합니다. – gtcaz

+0

당신이 할 수있는 일은 당신이 원한 것과 당신이 원하지 않는 것 모두를 맞추는 것입니다. 경기가 반복되면 불필요한 추가 항목을 걸러 낼 수 있습니다. – erisco

답변

3

당신은 부정적인보기 미리를 사용할 수 있습니다

^(?!.*?(.).*?\1)[lrsa]*m[lrsa]*$ 

당신이`[lrsaa]로 작동하지 않습니다

+1

예, 각 문자가 고유 한 경우 작동합니다. 매우 도움이됩니다. (나는 그것을 통해 정렬하고 그것이 작동하는 방법을 이해해야합니다.) 이것 역시 읽으십시오 : http://stackoverflow.com/questions/1749437/regular-expression-negative-lookahead) 편지, 예 : "abbcde"그리고 "dade"가 아닌 "babe"와 일치하고 싶습니까? 가능한? – gtcaz

+0

나는 너를 올바르게 이해했는지 확신 할 수는 없지만, 아마도 이것은 마술을 할 것이다 :'^ (?!. *? (d). *? \ 1) \ w + $' – ZyX