dongyi4420
dongyi4420
2010-05-04 17:43
浏览 114
已采纳

preg_match问题

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() 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'
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doujiurong7210
    doujiurong7210 2010-05-04 17:47
    已采纳

    You need to escape the backslashes in the PHP string:

    "/.{4}_tmp\\\\([A-Za-z0-9.\\\\]*)\\(([0-9]*)\\) : (.*)/i"
    
    点赞 评论
  • dowy77780
    dowy77780 2010-05-04 17:49

    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

    点赞 评论

相关推荐