PHP中的正则表达式匹配单词有一些例外

时间:2012-10-23 06:53:43

标签: php regex regex-negation

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

我正在编写正则表达式,以便将上述字符串中的字符串“MS-DOS文件”用于匹配$string1$string4。该模式不应与'MS-DOS文件'匹配,后面跟着关键字'NE'或'MZ'。对于其他它应该匹配它应匹配字符串4但不匹配字符串2,3

有什么想法吗?

我用可怜的正则表达式尝试了这个但没有运气:(

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

1 个答案:

答案 0 :(得分:3)

试试这个:

"/MS-DOS file(?:,\s|$)(?!MZ|NE).*/"

你忽略了逗号并误用了字符集方括号。

编辑:另外,我相信你想检查'NE',而不是'NI'。