我的格式为字符串:
"The quick __grey__ fox jumps over the lazy __brown__ dog."
我想找到并替换双下划线之间的任何单词(或有时是句子)。
我目前在PHP中使用preg_match_all:
$pattern = '/__(.*)__/';
这很好用......直到它在同一行找到两组双下划线,例如在上面的示例中,它匹配" __ gray __"和" __ brown __"如我所愿,而且" __ grey__ fox跳过懒惰的棕色__",我不想要......
所以我的问题是,是否只有第一个和第二个实例,第三个和第四个实例之间的匹配方式等?
如果之前有人问过我,我很抱歉,但我真的不确定如何用简洁的方式表达问题以进行有用的搜索!
提前致谢。
答案 0 :(得分:3)
要在两个最接近的相同分隔符之间找到一些子字符串,请使用延迟点匹配:
$pattern = '/__(.*?)__/';
请参阅demo
要匹配换行符,请使用/s
修饰符:
$pattern = '/__(.*?)__/s';