单引号的PHP RegEx捕获

Dav*_*iss 0 php regex string preg-match

我想从以下字符串中捕获:

var MyCode = "jdgsrtjd";
var ProductId = 'PX49EZ482H';
var TempPath = 'Media/Pos/';
Run Code Online (Sandbox Code Playgroud)

我想得到的是单引号ProductId值之间的可变长度值

PX49EX482H
Run Code Online (Sandbox Code Playgroud)

我有这个,我认为它很接近,但是单引号让我感到沮丧.我不确定如何正确逃脱它们.

preg_match('/var ProductID ='(.*?)';/', $str, $matches);
Run Code Online (Sandbox Code Playgroud)

提前致谢!

cod*_*ict 5

或者你可以用这种方式"代替'你不需要逃避'模式中的发现:

preg_match("/var ProductID ='(.*?)';/", $str, $matches);
Run Code Online (Sandbox Code Playgroud)

您要查找的模式var ProductID ='(.*?)';也与输入字符串不匹配,因为:

  • 之后没有空间 =
  • ProductID 不匹配 ProductId

要修复1,您可以在之后给出一个空格=.如果您不知道可以\s*用于任意空间的空格数.

要修复2,可以使用i修饰符使匹配大小写不敏感.

preg_match("/var ProductID\s*=\s*'(.*?)';/i", $str, $matches);
                          ^^  ^^          ^
Run Code Online (Sandbox Code Playgroud)

  • 等号后你错过了一个空格. (2认同)