哪个正则表达式找到一组数字?

时间:2012-12-22 16:04:59

标签: php regex preg-match

我找不到可以检索数字989552的正则表达式的麻烦 /boards/989552-lettersandnumbers-morelettersandnumbers

我正在搜索的是,我可以检索/boards/和第一个-之间的内容吗?

3 个答案:

答案 0 :(得分:2)

/boards/(\d+)-

应将数字存储在第一个匹配组中。

答案 1 :(得分:0)

使用.*/(\d+)-,因为.*贪婪,它会与最后一个/匹配:

$string = "/boards/989552-dgw25235-42352gdsgw";

echo preg_match('#.*/(\d+)-#',$string,$match);

echo $match[1];

>>> 989552

答案 2 :(得分:0)

这是一个带注释的解决方案。

<?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]);

当我用这样的垂直符号写出正则表达式时,我发现理解正则表达式要容易得多。