PHP查找字符串和跟随未知字符

Dav*_*iss 2 php regex

我还在学习PHP正则表达式,所以我希望有人可以帮助我完成我想要完成的任务.

$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
Run Code Online (Sandbox Code Playgroud)

我想要做的是匹配读取的字符串部分

var MyCode ="
Run Code Online (Sandbox Code Playgroud)

在匹配该部分后,我想检索该字符串后面的其余动态生成的字符.在这个例子中,[dentline]是8个字符,但情况可能并非总是如此.因此,我希望一直匹配,直到我到达

";
Run Code Online (Sandbox Code Playgroud)

在我有效地捕获了字符串的那一部分之后,我想剥离字符串,以便剩下的信息是双引号之间的内容

dentline
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢!

Mar*_*ers 8

试试这个:

$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
$matches = array();
preg_match('/var MyCode = "(.*?)";/', $string, $matches);
echo $matches[1];
Run Code Online (Sandbox Code Playgroud)

结果:

dentline
Run Code Online (Sandbox Code Playgroud)

ideone

说明

var MyCode = "    Match this string literally and exactly
(                 Start a capturing group.
.*?               Match any characters, as few as possible (not greedy)
)                 End the capturing group.
";                Match the closing double quote followed by a semi-colon

捕获组"捕获"匹配的内容并将其存储在数组中,$matches以便以后可以访问它.

有关这些结构的更多信息,请访问:

变化

如果"MyCode"可以变化,那么请改用:

preg_match('/var \w+ = "(.*?)";/', $string, $matches);
Run Code Online (Sandbox Code Playgroud)

在这个表达式中\w意味着"匹配任何单词字符".您可能还希望使用\s+而不是空格,以便可以匹配任何空白字符(也包括制表符和新行)中的一个或多个.类似地\s*匹配零个或多个空格.所以你尝试的另一种可能性是:

preg_match('/var\s+\w+\s*=\s*"(.*?)"\s*;/', $string, $matches);
Run Code Online (Sandbox Code Playgroud)