PHP preg_match_all函数查找版本模式

时间:2018-12-04 14:26:57

标签: php preg-match-all

我正在尝试从包含以下行的文件中获取版本信息:

[assembly:AssemblyVersion(“ 1.0.0.1”)]

我需要获取1.0.0.1

我尝试过的功能如下:

preg_match_all('/[assembly: AssemblyVersion("([^,">]+).*?")/')

但是此函数未返回任何匹配项。

在此示例中,获取版本信息的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

您当前的代码似乎无法正常工作。从我所看到的主要问题是,您没有转义文字括号和方括号。进行更改后,它似乎可以工作:

$input = "blah blah blah [assembly: AssemblyVersion(\"1.0.0.1\")] blah";
preg_match_all('/\[assembly: AssemblyVersion\("([^,">]+).*?"\)\]/', $input, $array);
print_r($array[1]);

Array
(
    [0] => 1.0.0.1
)

答案 1 :(得分:1)

您可以使用此正则表达式:

$line='[assembly: AssemblyVersion("1.0.0.1")]';

    preg_match_all("/(?<=\[assembly: AssemblyVersion\(\").*(?=\"\))]/",$line,$matches);

答案 2 :(得分:1)

如果您无需正则表达式就可以解决问题-您必须这样做。因为此功能非常繁琐且不可预测。

例如,只需将字符串用双引号引起来(如果字符串具有严格的格式):

$parts = explode('"', '[assembly: AssemblyVersion("1.0.0.1")]');
echo $parts[1];