【发布时间】:2014-09-27 12:45:36
【问题描述】:
我正在尝试使用此正则表达式将所有字符串括在双引号中:
"(?:[^"\\]|\\.)*"
我已经在这个网站上尝试过:http://www.phpliveregex.com/ 并且它可以工作,但是当我把它放在我的 php 代码中时:
if( preg_match('/"(?:[^"\\]|\\.)*"/', $input_line, $output_array) )
{
.
.
.
}
我收到此错误:
Warning: preg_match(): Compilation failed: missing terminating ] for character class at offset 15
我错过了什么?
已解决:
正如 mario 指出的那样,反斜杠被 PHP 转义了,我让它像这样工作:
if( preg_match('/"(?:[^"\\\]|\\.)*"/', $sLine, $matches) ){
.
.
.
}
【问题讨论】:
-
反斜杠在 PHP 双引号或单引号字符串上下文中自行转义。
preg_match只会在]之前看到一个反斜杠。 -
非常感谢@mario,我已经尝试解决这个问题几个小时,终于成功了。 :D
标签: php regex file csv explode