否定回溯以查看 中的前一个字符是否为 Y


Negative lookback to see if previous character from a is Y

我正在尝试匹配前面没有Y的每个新行并将其替换为空字符串,但是这个表达式给了我一个错误。

$tsv = preg_replace("/(?<!Y)'n/m", "", $tsv);

但出于某种原因,这是替换所有换行符。我的回头看有什么问题?

您可能正在处理的行尾与预期不同。

  • 'r - 通常用于基于 Mac 的系统
  • 'n - 通常用于基于 Unix 的系统
  • 'r'n - 通常用于基于 Windows 的系统

您可以尝试这样做来处理任何行尾:

$tsv = preg_replace("/(?<!Y)('r'n?|'n)/m", "", $tsv);