如何让 regexreplace 根据字符前面的内容忽略字符,并在 Google 工作表中不满足这些条件时替换它?

How to get regexreplace to ignore a character based on what comes before it and replace it when those conditions are not met in Google sheets?

我有一些文本,其中所有的撇号 (‘) 和引号 (“) 都错误地显示为问号。例如我写信是为了表达我的祝福并祝贺你订婚。我在 Google 工作表中使用 regexreplace 将问号替换为撇号:=REGEXREPLACE(A1, "?", "'")

问题是我不想用撇号替换实际的(即正确的)问号。所以,我需要能够让 regexreplace 忽略真正的问号。我们可以将真正的问号定义为 1. 在两个 space 之前出现的问号(在段落末尾的情况下)和 2. 在 space 和大写字母之前(在例如在一个段落的句子末尾)。在实践中,规则 2 会捕获一些撇号(那些出现在专有名词之前而不是在新句子开头的撇号),但这种情况很少见,无关紧要。

关于如何将这些忽略真实问号的规则放入 regexreplace 中的任何想法?

尝试:

=INDEX(REGEXREPLACE(SUBSTITUTE(A1:A5, "?", "'"), " '|' ", " ? "))

尝试

=REGEXREPLACE(REGEXREPLACE(A2,"\?([\w\.])","'"),"\?( [a-z])","'")