PHP REGEX 查找和替换模式

PHP REGEX find & replace patterns

尝试构建一个正则表达式来定位任何字符后跟双引号的模式

此正则表达式正确定位了每个出现的位置

(\S"")

给出下面的例子

$string='"WEINSTEIN","ANTONIA \"TOBY"","STILES","HOOPER \"PETER"","HENDERSON",';
$pattern = '(\S"")';
$replacement = '\""';
$result=preg_replace($pattern, $replacement, $string);

我的结果是

"WEINSTEIN","ANTONIA \"TOB\"","STILES","HOOPER \"PETE\"","HENDERSON"

但我正在寻找

"WEINSTEIN","ANTONIA \"TOBY\"","STILES","HOOPER \"PETER\"","HENDERSON"

我知道替换是 removing/replacing 整个匹配项,但是我怎样才能删除除第一个字母以外的所有字母而不是完全替换它?

您可以更改您的模式以使用正后视,这样它就不会捕获非 space 字符:

$string='"WEINSTEIN","ANTONIA \"TOBY"","STILES","HOOPER \"PETER"","HENDERSON",';
$pattern = '/(?<=\S)""/';
$replacement = '\""';
$result=preg_replace($pattern, $replacement, $string);
echo $result;

输出

"WEINSTEIN","ANTONIA \"TOBY\"","STILES","HOOPER \"PETER\"","HENDERSON",

Demo on 3v4l.org