使用PHP正则表达式从字符串中提取年份
我想从字符串中提取年份。我得到了一个不完整的解决方案。我的字符串将始终像: 请将jazz 2014和2015+的mpg信息发送到我的手机号码 +123456789 我尝试了以下正则表达式使用PHP正则表达式从字符串中提取年份,php,regex,preg-match-all,Php,Regex,Preg Match All,我想从字符串中提取年份。我得到了一个不完整的解决方案。我的字符串将始终像: 请将jazz 2014和2015+的mpg信息发送到我的手机号码 +123456789 我尝试了以下正则表达式 preg_match_all('!\d{4}+| \d{4}+\W!', $str, $matches); 这将输出以下数组 Array ( [0] => Array ( [0] => 2015 [1] => 20
preg_match_all('!\d{4}+| \d{4}+\W!', $str, $matches);
这将输出以下数组
Array
(
[0] => Array
(
[0] => 2015
[1] => 2014+
[2] => 1234
[3] => 5678
)
)
我只需要获得带有+符号的年份部分(如果有)。也就是说,我只想要这个:
Array
(
[0] => Array
(
[0] => 2015
[1] => 2014+
)
)
您的\d{4}+|\d{4}+\W模式匹配4位数字注意所有格{4}+量词等于{4}或一个空格、4位数字和任何非单词字符
你可以用
'~\b\d{4}\b\+?~'
见
细节
\b字边界
\d{4}-4位数字
\b-另一个单词边界
\+? - 可选的1或0个引用加上符号。
:
输出:
Array
(
[0] => 2014
[1] => 2015+
)
在空格之间匹配日期4位数字(可选后跟a+):
preg_match_all('( [0-9]{4}\+? )', $str, $matches);
echo '<pre>' . print_r($matches[0], true) . '</pre>';
非常感谢。它帮助我从中获得了很多年string@PawanThakur您也可以使用\b?:20 | 19\d{2}\b仅提取当代年份。谢谢您的建议。但是我对上面的代码很满意,因为我使用了数组,比如数组'03/2016'、'1995'、'2002第4系列'、'2003/2004'、'04/1991'、'12/2009'、'06/1977-311XXXX'、'04/2008'、'02/1999 T系列'、'06/1995 N159XXX';我从$matches[0][0]中获得了完美的年份。再次感谢
preg_match_all('( [0-9]{4}\+? )', $str, $matches);
echo '<pre>' . print_r($matches[0], true) . '</pre>';
Array
(
[0] => 2014
[1] => 2015+
)