我需要正则表达式方面的帮助。
对于用PHP替换占位符,我有以下搜索模式:
__H1-(.*)__
__H1-(.*)-(.*)__
__H1-(.*)-(.*)-(.*)__
Etc.
我有以下案文:
$text ="This is an example __H1-1__ with placeholders __H1-1-2__ that are replaced";
这是我的替换函数
$text = preg_replace("/" . $placeholder . "/U", $replace_string, $text);
这里的问题是只找到了第一个搜索模式,但是应该区别对待这些模式。
目前,当查找**H1-(. *)**时,$text中的两个字符串(在第二个部分模式中)都会被替换。
另一个问题是搜索文本可能是这样的
__H1-1-2-hi____H1-1-2__
在这种情况下,只找到第一个模式,但这是两个不同的模式:
__H1-1-2-hi__
__H1-1-2__
我该怎么处理这种事?
1条答案
按热度按时间ars1skjm1#
您的正则表达式的问题是
.*
在可能的情况下也会捕获-
和_
。这不是您想要的...所以不要允许: