2013-06-03 3 views
0

PHP에서 사용하려고하는 .NET Regex 엔진 용으로 작성된 것으로 의심되는 정규식이 있습니다. 그것은 PCRE에서 지원하지 않는 것으로 다음과 같은 문자 케이스 포함 (일치는 반환되지 않습니다,하지만 오류가 아닙니다) : 나는 a cross-platform guide을 확인했지만, 수 없었던정규 표현식 대소 문자 호환성

[a-z-[cfx]] 

preg_match('/[a-z-[cfx]]/', 'a'); => int(0) 
preg_match('/[a-z-[cfx]]/', 'b'); => int(0) 
preg_match('/[a-z-[cfx]]/', 'c'); => int(0) 
preg_match('/[a-z-[cfx]]/', 'f'); => int(0) 
preg_match('/[a-z-[cfx]]/', 'x'); => int(0) 

은 이 서브 케이스가 실제로 무엇을하는지 알아 보려면 a-z없이 cfx입니까? 그렇다면 PCRE에 이것을 쓰는 가장 좋은 방법은 무엇입니까?

+0

먼저 무엇을 찾으시겠습니까? 'a-z'만으로 모든 문자가 a에서 z로 일치한다는 것을 알고 계셨습니까? 그러므로'cfx'는 의미가 없습니다 ... – HamZa

답변

2

실제로 외부 문자 클래스의 문자는 제외됩니다. 당신은 그것에 대해 here 읽을 수 있습니다.

PCRE에서 동일한 결과를 얻으려면 /[abdeg-wyz]/ 행을 따라 뭔가를 사용할 수 있습니다.

+0

아, 이제 이해가됩니다 ** + 1 **! – HamZa