preg_match problem
I'm trying to get some stuff from a string in php. In RegexBuddy and Regular expression tester (firefox addon) it works good, but php gives me the following:
Warning: preg_match() [function.preg-match]: Compilation failed: unmatched parentheses at offset 34 in D:\path\example.php on line 62
my pattern is "/.{4}_tmp\\([A-Za-z0-9.\\]*)\(([0-9]*)\) : (.*)/i"
an example string: C:\Temp\browseide\projects\32\821C_tmp\SourceFiles\main.c(8) : error C2143: syntax error : missing ';' before 'for'
what RegexBuddy gets:
821C_tmp\SourceFile开发者_JAVA百科s\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'
You need to escape the backslashes in the PHP string:
"/.{4}_tmp\\\\([A-Za-z0-9.\\\\]*)\\(([0-9]*)\\) : (.*)/i"
You need to escape the back-slash again, once PHP string parses that string you end up with:
/.{4}_tmp\([A-Za-z0-9.\]*)\(([0-9]*)\) : (.*)/i
Try echo "/.{4}_tmp\\([A-Za-z0-9.\\]*)\(([0-9]*)\) : (.*)/i";
You should have \\\\
inside your double quotes if you want a \\
in the pattern
精彩评论