使用 PHP 正则表达式从字符串中提取年份
Extract year from a string using PHP regex
我想从字符串中提取年份。我得到了一个不完整的解决方案。我的字符串总是像:
Please message mpg of jazz 2014 and 2015+ to my mobile number
+123456789
我试过以下正则表达式;
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}
)或 space、4 位数字和任何非单词字符
您可以使用
'~\b\d{4}\b\+?~'
详情
\b
- 单词边界
\d{4}
- 4 位数
\b
- 另一个单词边界
\+?
- 可选(出现 1 次或 0 次)加号。
$re = '~\b\d{4}\b\+?~';
$str = 'Please message mpg of jazz 2014 and 2015+ to my mobile number +123456789';
if (preg_match_all($re, $str, $matches)) {
print_r($matches[0]);
}
输出:
Array
(
[0] => 2014
[1] => 2015+
)
匹配日期(4 位数字),可选地后跟 +
,空格之间:
preg_match_all('( [0-9]{4}\+? )', $str, $matches);
echo '<pre>' . print_r($matches[0], true) . '</pre>';
输出:
Array
(
[0] => 2014
[1] => 2015+
)
我想从字符串中提取年份。我得到了一个不完整的解决方案。我的字符串总是像:
Please message mpg of jazz 2014 and 2015+ to my mobile number +123456789
我试过以下正则表达式;
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}
)或 space、4 位数字和任何非单词字符
您可以使用
'~\b\d{4}\b\+?~'
详情
\b
- 单词边界\d{4}
- 4 位数\b
- 另一个单词边界\+?
- 可选(出现 1 次或 0 次)加号。
$re = '~\b\d{4}\b\+?~';
$str = 'Please message mpg of jazz 2014 and 2015+ to my mobile number +123456789';
if (preg_match_all($re, $str, $matches)) {
print_r($matches[0]);
}
输出:
Array
(
[0] => 2014
[1] => 2015+
)
匹配日期(4 位数字),可选地后跟 +
,空格之间:
preg_match_all('( [0-9]{4}\+? )', $str, $matches);
echo '<pre>' . print_r($matches[0], true) . '</pre>';
输出:
Array
(
[0] => 2014
[1] => 2015+
)