我很难找到可以检索数字的正则989552
表达式
/boards/989552-lettersandnumbers-morelettersandnumbers
我特别要搜索的是我可以检索介于/boards/
和第一个之间的内容-
吗?
我很难找到可以检索数字的正则989552
表达式
/boards/989552-lettersandnumbers-morelettersandnumbers
我特别要搜索的是我可以检索介于/boards/
和第一个之间的内容-
吗?
/boards/(\d+)-
应该将数字存储在第一个匹配组中。
.*/(\d+)-
贪婪地使用.*
它将匹配到最后一个/
:
$string = "/boards/989552-dgw25235-42352gdsgw";
echo preg_match('#.*/(\d+)-#',$string,$match);
echo $match[1];
>>> 989552
这是一个带注释的解决方案。
<?php // RAY_temp_user1722791.php
error_reporting(E_ALL);
/*
I'm having troubles finding a regex that can retrieve the numbers 989552 in /boards/989552-lettersandnumbers-morelettersandnumbers
What I'm searching in particular is can I retrieve what stands between /boards/ and the first -?
*/
// A REGULAR EXPRESSION
$rgx
= '#' // REGEX DELIMITER
. '/boards/' // THE SEARCH STRING
. '(' // START A GROUP
. '\d+' // SOME DIGITS
. ')' // END OF THE GROUP
. '-' // THE DASH
. '#' // REGEX DELIMITER
;
// A TEST STRING
$str = 'in /boards/989552-lettersandnumbers';
// PEFORM THE MATCH
preg_match($rgx, $str, $mat);
// FIND THE NUMBERS IN THE FIRST MATCHED GROUP
var_dump($mat[1]);
当我像这样用垂直符号写出正则表达式时,我发现它们更容易理解。