Biroka
Biroka

Reputation: 609

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\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'

Upvotes: 2

Views: 4119

Answers (2)

gnarf
gnarf

Reputation: 106332

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

Upvotes: 2

Mark Byers
Mark Byers

Reputation: 838116

You need to escape the backslashes in the PHP string:

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

Upvotes: 2

Related Questions