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

时间:2010-10-04 22:39:10

标签: php regex

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

$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';

我想要做的是匹配字符串中的

部分
var MyCode ="

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

";

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

dentline

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:8)

试试这个:

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

结果:

dentline

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);

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

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