0

I need to extract a project number out of a string. If the project number was fixed it would have been easy, however it can be either P.XXXXX, P XXXXX or PXXXXX.

Is there a simple function like preg_match that I could use? If so, what would my regular expression be?

4

6 回答 6

1

您说项目编号是 5 位长度中的 4 位,所以:

preg_match('/P[. ]?(\d{4,5})/', $tring, $m);
$project_number = $m[1];
于 2013-10-04T08:53:36.403 回答
1

尝试这个:

if (preg_match('#P[. ]?(\d{5})#', $project_number, $matches) {
    $project_version = $matches[1];
}

正则表达式可视化

调试演示

于 2013-10-04T08:39:12.423 回答
1

确实存在 - 如果这是较大字符串的一部分,例如"The project (P.12345) is nearly done",您可以使用:

preg_match('/P[. ]?(\d{5})/',$str,$match);
$pnumber = $match[1];

否则,如果字符串始终只是P.12345字符串,则可以使用:

preg_match('/\d{5}$/',$str,$match);
$pnumber = $match[0];

尽管您可能更喜欢上面示例的更明确的匹配。

于 2013-10-04T08:33:44.580 回答
0

我会使用这种正则表达式:/.*P[ .]?(\d+).*/

这是一些测试行:

$string = 'This is the P123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string); 
var_dump($project);

$string = 'This is the P.123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);

$string = 'This is the P 123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);
于 2013-10-04T08:38:36.477 回答
0

假设您要从字符串中提取 XXXXX 并且 XXXXX 都是整数,您可以使用以下内容。

preg_replace("/[^0-9]/", "", $string);

您可以在方括号内使用^插入字符来否定表达式。所以在这种情况下,它将用任何东西代替任何不是数字的东西。

于 2013-10-04T08:29:34.607 回答
0

使用explode()函数来拆分那些

于 2013-10-04T08:16:13.397 回答