Php 预匹配问题

Php 预匹配问题,php,regex,preg-match,Php,Regex,Preg Match,我试图从php中的字符串中获取一些内容。在RegexBuddy和RegularExpressionTester(firefox插件)中,它运行良好,但php提供了以下信息: 警告:preg_match() [function.preg match]:编译 失败:位于的括号不匹配 偏移量34英寸 D:\path\example.php 第62行 我的模式是“/。{4}\u tmp\\([A-Za-z0-9.\\]*)\([0-9]*)\:(.*)/i” 示例字符串:C:\Temp\browseid

我试图从php中的字符串中获取一些内容。在RegexBuddy和RegularExpressionTester(firefox插件)中,它运行良好,但php提供了以下信息:

警告:preg_match() [function.preg match]:编译 失败:位于的括号不匹配 偏移量34英寸 D:\path\example.php 第62行

我的模式是
“/。{4}\u tmp\\([A-Za-z0-9.\\]*)\([0-9]*)\:(.*)/i”

示例字符串:
C:\Temp\browseide\projects\32\821C\u tmp\SourceFiles\main.C(8):错误C2143:语法错误:缺少“;”在“for”之前

RegexBuddy得到什么:

821C_tmp\SourceFiles\main.c(8) : error C2143: syntax error : missing ';' before 'for'
Group 1:    SourceFiles\main.c
Group 2:    8
Group 3:    error C2143: syntax error : missing ';' before 'for'

您需要转义PHP字符串中的反斜杠:

"/.{4}_tmp\\\\([A-Za-z0-9.\\\\]*)\\(([0-9]*)\\) : (.*)/i"

当PHP字符串解析该字符串后,您需要再次转义反斜杠:

/.{4}_tmp\([A-Za-z0-9.\]*)\(([0-9]*)\) : (.*)/i
尝试
echo/。{4}\u tmp\\([A-Za-z0-9.\\]*)\([0-9]*):(.*)/i”


如果您想在模式中使用
\\\\
,则应该在双引号中包含
\\\

没有必要在结尾处将“\\\”加倍-PHP没有特殊的
\(
\)
,因此不需要对其进行转义。。。也不痛,只是觉得值得一提。