在字符串中查找子字符串,其中子字符串封装在特定字符

时间:2015-09-23 14:14:40

标签: php regex preg-match-all

我的格式为字符串:

"The quick __grey__ fox jumps over the lazy __brown__ dog."

我想找到并替换双下划线之间的任何单词(或有时是句子)。

我目前在PHP中使用preg_match_all:

$pattern = '/__(.*)__/';

这很好用......直到它在同一行找到两组双下划线,例如在上面的示例中,它匹配" __ gray __"和" __ brown __"如我所愿,而且" __ grey__ fox跳过懒惰的棕色__",我不想要......

所以我的问题是,是否只有第一个和第二个实例,第三个和第四个实例之间的匹配方式等?

如果之前有人问过我,我很抱歉,但我真的不确定如何用简洁的方式表达问题以进行有用的搜索!

提前致谢。

1 个答案:

答案 0 :(得分:3)

要在两个最接近的相同分隔符之间找到一些子字符串,请使用延迟点匹配:

$pattern = '/__(.*?)__/';

请参阅demo

要匹配换行符,请使用/s修饰符:

$pattern = '/__(.*?)__/s';