在php字符串中查找相同的两个字符之间的文本

时间:2015-11-05 02:10:37

标签: php regex string

所以我知道如何从php字符串中提取文本,当它被两个不同的字符(即[abc])干净地隔开时...

但是,我现在面临一个问题,我需要提取位于同一个角色的两个实例之间的文本(' /')。甚至更棘手的是,这可能会在同一个字符串中多次发生。

一个例子应该有助于使这个更清晰:

"This is /a/ silly ex/amp/le of what I /me/an."

在这种情况下,我想抓住'a', 'amp' and 'me'

这些例子显示了我可能遇到的各种案例(不同的长度和案例,我没有抓住整个单词而是单词中的字母)。

我尝试过的事情:

('/(\/.+?)+(\/)/i')

但正如预期的那样,它捕获了第一个和最后一个斜杠之间的所有内容。理想的方法是匹配直到NEXT出现斜杠,而不是最后一个......

我一直在谷歌上搜索这段时间,但我只提出了两个不同分隔符的案例。

2 个答案:

答案 0 :(得分:1)

您可以使用preg_match_all获得多个匹配。

$string = 'This is /a/ silly ex/ampl/e of what/ I me/an';
$regex = '/\/.+?\//';
preg_match_all($regex, $string, $matches);

print_r($matches);


Array
(
    [0] => Array
    (
        [0] => /a/
        [1] => /ampl/
        [2] => / I me/
    )
)

答案 1 :(得分:0)

试试这个:

(\/)(.*?)\1

(\/)内部的内容将是您在之间匹配的内容。例如,一组*之间的匹配将如下所示:

(\*)(.*?)\1

Regex101