preg_match未知修饰符'['

时间:2013-08-22 07:37:44

标签: php regex preg-match

我使用以下代码

$api_dump_reader = fopen($api_path, "r");
$content = fread($api_dump_reader, filesize($api_path));
$api_lines = explode("\n", $content);

foreach($api_lines as $line)
{
    if (preg_match("(Class) [a-zA-Z]+ (\: [a-zA-Z]+)? (\[[a-zA-Z+]\])?", $line))
    {
        echo $line;
    }
}

该表达式应该与以下示例匹配

Class Instance [notbrowsable]
Class Accoutrement : Instance
Class PlayerGui : BasePlayerGui [notCreatable]
...

为什么我的正则表达式会给我这个错误?我找不到错。

2 个答案:

答案 0 :(得分:2)

你错过了斜杠:

if (preg_match("/(Class) [a-zA-Z]+ (\: [a-zA-Z]+)? (\[[a-zA-Z+]\])?/", $line))
{
   echo $line;
}

尝试一下:)

答案 1 :(得分:0)

试试这个:

/(class) [a-z]+( \: [a-z]+)?( \[[a-z+]+\])?/i

作为RegExp。你把空白放在了错误的地方。它们需要放在可选组中。

编辑:

好的,我用分隔符得到它并将它们添加到我的RegExp中。这肯定是不正确的,但最重要的是RegExp本身存在问题,这些问题在先前输入的问题中没有 (重复)。