【问题标题】:PHP REGEX find & replace patternsPHP REGEX 查找和替换模式
【发布时间】:2019-12-29 14:58:00
【问题描述】:

尝试构造一个正则表达式,该表达式将定位 ANY 字符后跟双引号的模式

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

(\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"

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

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    您可以更改您的模式以改用正向向后看,这样它就不会捕获非空格字符:

    $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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多