0

我对正则表达式不是很好,而且我对这个有点摸不着头脑。我使用 preg_match 得到了以下 php 代码,它应该匹配注册表路径中的所有字符,除了记录号......在这种情况下是“记录??]”:

<?php 
$reg_section = "[HKEY_LOCAL_MACHIN\SOFTWARE\INTERSTAR TECHNOLOGIES\XMEDIUS\CONFIG MANAGER\SYSTEM\COMPANIES\RECORD11]";

$pattern = "/^(\[HKEY_LOCAL_MACHIN\\\SOFTWARE\\\INTERSTAR TECHNOLOGIES\\\XMEDIUS\\\CONFIG MANAGER\\\SYSTEM\\\COMPANIES\\\RECORD(\d+)\])$/";
if ( preg_match($pattern, $reg_section )) { 

echo "Found"; 
} else { 

echo "not found"; 
}

?> 

我得到的错误是:

Parse error: syntax error, unexpected T_IF in C:\Inetpub\wwwroot\xfax\regmatch.php on line5

提前致谢

4

1 回答 1

3

你也必须逃避[

/^\[HKEY_LOCAL_MACHIN\\SOFTWARE\\INTERSTAR TECHNOLOGIES\\XMEDIUS\\CONFIG MANAGER\\SYSTEM\\COMPANIES\\RECORD(\d+)]$/

否则它标志着一个字符类的开始。

这有效:

$subject = "[HKEY_LOCAL_MACHIN\\SOFTWARE\\INTERSTAR TECHNOLOGIES\\XMEDIUS\\CONFIG MANAGER\\SYSTEM\\COMPANIES\\RECORD11]";
$pattern = "/^\\[HKEY_LOCAL_MACHIN\\\\SOFTWARE\\\\INTERSTAR TECHNOLOGIES\\\\XMEDIUS\\\\CONFIG MANAGER\\\\SYSTEM\\\\COMPANIES\\\\RECORD\\d+\\]$/";
var_dump(preg_match($pattern, $subject));
于 2009-02-20T23:00:11.707 回答