The problem with preg_match

I am trying to get some stuff from a string in php. In RegexBuddy and regex (firefox addon) it works well, but php gives me this:

Warning: preg_match () [function.preg-match]: compilation Failed: Matching parentheses at offset 34 in D: \ path \ example.php on line 62

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

example line: C:\Temp\browseide\projects\32\821C_tmp\SourceFiles\main.c(8) : error C2143: syntax error : missing ';' before 'for'

what RegexBuddy gets:

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'

      

+2


a source to share


2 answers


You need to escape backslashes in your PHP string:



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

      

+2


a source


You need to escape the backslash again once the PHP line checks that line, which results in you:

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

      



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

You must have \\\\

inside your double quotes if you want \\

in the template

+2


a source







All Articles