php regex:如何匹配此注册表路径?

发布于 2024-07-14 03:39:41 字数 618 浏览 4 评论 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"; 
}

?> 

我得到的错误是:

解析错误: 语法错误,C:\Inetpub\wwwroot\xfax\regmatch.php 中出现意外的 T_IF 在线 5

提前致谢

I'm not very good with regex and i've been kinda scratching my head on this one. I got the following php code using preg_match which is supposed to match all characters in the registry pathing except for the record number... which in this case is "record??]":

<?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"; 
}

?> 

The error I get is:

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

thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笨死的猪 2024-07-21 03:39:41

您也必须转义 [

/^\[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));

You have to escape the [ too:

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

Otherwise it marks the begin of a character class.

This works:

$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));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文