Php preg_match_all 函数查找版本模式
Php preg_match_all function to find a version pattern
我正在尝试从包含以下行的文件中获取版本信息:
[程序集:程序集版本(“1.0.0.1”)]
我需要获取 1.0.0.1
我试过的功能如下:
preg_match_all('/[assembly: AssemblyVersion("([^,">]+).*?")/')
但是这个函数没有返回任何匹配项。
在此示例中获取版本信息的正确方法是什么?
您可以使用这个正则表达式:
$line='[assembly: AssemblyVersion("1.0.0.1")]';
preg_match_all("/(?<=\[assembly: AssemblyVersion\(\").*(?=\"\))]/",$line,$matches);
您当前的代码似乎无法正常工作。据我所知,主要问题是您没有转义文字括号和方括号。进行更改后,它似乎起作用了:
$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
)
如果你不用正则表达式就能解决问题 - 你必须这样做。因为这个函数很重,不可预测。
例如,用双引号分隔字符串(如果字符串有严格的格式):
$parts = explode('"', '[assembly: AssemblyVersion("1.0.0.1")]');
echo $parts[1];
我正在尝试从包含以下行的文件中获取版本信息:
[程序集:程序集版本(“1.0.0.1”)]
我需要获取 1.0.0.1
我试过的功能如下:
preg_match_all('/[assembly: AssemblyVersion("([^,">]+).*?")/')
但是这个函数没有返回任何匹配项。
在此示例中获取版本信息的正确方法是什么?
您可以使用这个正则表达式:
$line='[assembly: AssemblyVersion("1.0.0.1")]';
preg_match_all("/(?<=\[assembly: AssemblyVersion\(\").*(?=\"\))]/",$line,$matches);
您当前的代码似乎无法正常工作。据我所知,主要问题是您没有转义文字括号和方括号。进行更改后,它似乎起作用了:
$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
)
如果你不用正则表达式就能解决问题 - 你必须这样做。因为这个函数很重,不可预测。
例如,用双引号分隔字符串(如果字符串有严格的格式):
$parts = explode('"', '[assembly: AssemblyVersion("1.0.0.1")]');
echo $parts[1];