如何使用 preg_match 从字符串中提取版本号和日期?
How to use preg_match to extract a version number and date from a string?
我有这个字符串:
= 1.0.2 - 2021-01-18 =
我希望使用 preg_match 从中提取版本号和日期并将其放入数组中,我有以下代码,但我肯定在这里做错了:
preg_match('/^([\d.]+)[\- ](\d{4}-\d\d-\d\d) =/', $string, $match)
我不确定如何处理字符串中的 = 和中间的连字符,或者即使以上是否能成功匹配 3 位版本号和日期。
我期望 $match 包含版本号和日期的数组。
如何使用 preg_match 从字符串中获取数组中的数据?
我根本不会使用 preg_match。如果您只使用一些基本的字符串操作,这会更简单(也更快):
$s = '= 1.0.2 - 2021-01-18 =';
$s = trim($s, '= ');
$ss = explode(' - ', $s);
现在 $ss[0] 是版本,$ss[1] 是日期。
如果它不是可变的,就在模式中匹配你想要的。这假设版本可以是 10.1.204
等,日期将始终是 YYYY-MM-DD
:
preg_match('/= (\d+\.\d+\.\d+) - (\d{4}-\d{2}-\d{2}) =/', $string, $match);
或对您的进行一些小的更正:
/= ([\d.]+)[\s-]+(\d{4}-\d\d-\d\d) =/
或者:
/^= ([\d.]+)[\s-]+(\d{4}-\d\d-\d\d) =/
然后查看$match[1]
和$match[2]
。但是,trim
和 explode
的答案可能更好。
我有这个字符串:
= 1.0.2 - 2021-01-18 =
我希望使用 preg_match 从中提取版本号和日期并将其放入数组中,我有以下代码,但我肯定在这里做错了:
preg_match('/^([\d.]+)[\- ](\d{4}-\d\d-\d\d) =/', $string, $match)
我不确定如何处理字符串中的 = 和中间的连字符,或者即使以上是否能成功匹配 3 位版本号和日期。
我期望 $match 包含版本号和日期的数组。
如何使用 preg_match 从字符串中获取数组中的数据?
我根本不会使用 preg_match。如果您只使用一些基本的字符串操作,这会更简单(也更快):
$s = '= 1.0.2 - 2021-01-18 =';
$s = trim($s, '= ');
$ss = explode(' - ', $s);
现在 $ss[0] 是版本,$ss[1] 是日期。
如果它不是可变的,就在模式中匹配你想要的。这假设版本可以是 10.1.204
等,日期将始终是 YYYY-MM-DD
:
preg_match('/= (\d+\.\d+\.\d+) - (\d{4}-\d{2}-\d{2}) =/', $string, $match);
或对您的进行一些小的更正:
/= ([\d.]+)[\s-]+(\d{4}-\d\d-\d\d) =/
或者:
/^= ([\d.]+)[\s-]+(\d{4}-\d\d-\d\d) =/
然后查看$match[1]
和$match[2]
。但是,trim
和 explode
的答案可能更好。