sco*_*ott 2 php regex string preg-replace str-replace
使用正则表达式和 php.ini 时是否有跳过第一个匹配项?
或者是否有某种方法可以使用 str_replace 来实现此目的。
谢谢
更新 我试图从另一个字符串中删除一个字符串的所有实例,但我想保留第一次出现的情况,例如
$toRemove = 'test';
$string = 'This is a test string to test to removing the word test';
Run Code Online (Sandbox Code Playgroud)
输出字符串将是:
这是一个测试字符串,用于测试删除单词test
preg_replace('/((?:^.*?\btest\b)?.*?)\btest\b/', '$1', $string);
Run Code Online (Sandbox Code Playgroud)
这个想法是匹配并捕获每个匹配之前的任何内容,然后将其重新插入。 (?:^.*?test)?导致第一个实例test包含在捕获中。(所有\bs 都是为了避免部分单词匹配,例如testinsmartest或testify。)