2012-10-23 4 views
0
$matchstring = 'MS-DOS file'; 
$string1 = 'MS-DOS file'; 
$string2 = 'MS-DOS file, NE Windows'; 
$string3 = 'MS-DOS file, MZ OS-windows'; 
$string4 = 'MS-DOS file, Clear OS-windows'; 

로 말하였습니다. 패턴은 'NE'또는 'MZ'키워드 뒤에 오는 'MS-DOS 파일'과 일치하지 않아야합니다. 다른 경우 문자열 4와 일치해야하지만 문자열 2와는 일치해야합니다.

아이디어가 있으십니까?

나는 불쌍한 내 정규식이 시도했지만 운 :(

if (preg_match("/MS-DOS file[\s]?[^MZ][^NE]/", $string1)){ 
    echo "True"; 
} else{ 
    echo "False"; 
} 
+0

항상 정확하면 왜 그걸 정확히 재현하지? 그래서'$ string1 | $ string2'을 사용합니까? – Nanne

답변

3

이 시도하지 :.

당신은 쉼표를 내려다 문자는 대괄호를 설정 오용 된
"/MS-DOS file(?:,\s|$)(?!MZ|NE).*/" 

편집 : 또한 'NI'가 아닌 'NE'를 확인하고 싶습니다.

+0

실제로, 쉼표가 누락되었습니다 – bodi0

+0

@Asad Regex는 문자열 4에 대해 작동하지만 'string1'에 대해서는 ','가 없으므로 강제로 ','강제로 작성하는 것이 좋습니다. – Shashi

+0

@Shashi 요청에 따라 편집 됨. –

관련 문제