php - 提取与正则表达式组匹配的字符串部分?

标签 php regex

不完全确定这是可能的,但希望能有惊喜。

我有一个看起来像这样的正则表达式:

$pattern = '#post/date/(\d\d\d\d)-(\d\d)-(\d\d)#';

而且,我什至有一个匹配它的字符串:

$string = 'post/date/2012-01-01';

当然,我事先不知道确切的模式和字符串,但它们看起来像这样。

我需要得到一个如下所示的数组:

$groups = array('2012', '01', '01);

该数组应包含与括号内的三个正则表达式组匹配的字符串部分。这可能吗?

最佳答案

括号之间的内容是子模式,您可以在应用正则表达式时获得每个子模式的结果。你可以像这样使用 preg_match_all

$string = 'post/date/2012-01-01';
$pattern = '#post/date/(\d\d\d\d)-(\d\d)-(\d\d)#';
preg_match_all($pattern, $string, $matches);
$groups = array($matches[1][0], $matches[2][0],$matches[3][0]);
echo '<pre>';
print_r($groups);
echo '</pre>';

当然,这只是一个展示行为的例子,你需要先检查字符串是否匹配模式,如果匹配,有多少次...... 你可以看到这段代码在这里工作:http://ideone.com/zVu75

关于php - 提取与正则表达式组匹配的字符串部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838820/

相关文章:

javascript - 如何为第一个字符和字符串的其余部分定义不同的正则表达式?

java - 如何使用php将mysql中的多行编码为json

php - Prestashop 类别页面加载速度太慢

regex - Jmeter 响应断言正则表达式

python - 为什么这个 Django 匹配在 urls.py 中不起作用?

regex - 通过正则表达式限制文本中的行数

javascript - Jquery数组通过ajax发送到php

php - 在 XSL 中定义 PHP 函数并调用它。可能的?如何?

php - API 在 WordPress 中上传文件

regex - 使用 grep(或任何其他像 linux cmd 工具一样的 grep)来打印与文件中特定子字符串匹配的整个单词