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

Find substrings in string where substring encapsulated in specific character

我有一个格式如下的字符串:

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

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

我目前在 PHP 中使用 preg_match_all:

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

这很好用...直到它在同一行找到两组双下划线,例如在上面的示例中,它匹配“__grey__”和“__brown__”作为我要,还要“__grey__狐狸跳过懒brown__”,这是我不想要的...

所以我的问题是有没有办法只匹配第一个和第二个实例、第三个和第四个实例等等?

如果之前有人问过这个问题,我深表歉意,但我真的不确定如何以足够简洁的方式来表达这个问题以执行有用的搜索!

提前致谢。

要在两个最接近的相同定界符之间找到一些子字符串,请使用惰性点匹配:

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

demo

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

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