正则表达式表示双引号不在行的开头/结尾或逗号之前/之后


Regex for double quotes not at start/end of line or preceding/following a comma

示例数据为:

"3610212505","3610212505","Jack is 6'2" tall"

我希望在 PHP 中使用正则表达式模式转义出现在 2 in 6'2" 之后的双引号。此行是我正在尝试清理的较大 CSV 文件的一部分。

基本上任何不是的双引号:

  • 在行的开头
  • 在行的末尾
  • 逗号前面或后面
(?<!^)(?<!,)"(?!$|,)

试试这个。请参阅演示。

https://regex101.com/r/wZ0iA3/9

$re = "/(?<!^)(?<!,)'"(?!$|,)/im";
$str = "'"3610212505'",'"3610212505'",'"Jack is 6'2'" tall'"";
$subst = "";
$result = preg_replace($re, $subst, $str);

类似

/"(?!(,|$|'w))/
  • (?!(,|$|'w)) 确保"后不跟字符串或'w ,$末尾

正则表达式演示

preg_replace("/'"(?!(,|$|''w))/", "", "'"3610212505'",'"3610212505'",'"Jack is 6'2'" tall'"");
=> "3610212505","3610212505","Jack is 6'2 tall"