我能够使用Python做到这一点:
>>> import re>>> re.sub(r"x(?=[^']*'([^']|'[^']*')*$)", "P", "axbx'cxdxe'fxgh'ixj'k")"axbx'cPdPe'fxgh'iPj'k"
这是使用非捕获匹配(?=
…)检查字符x是否在带引号的字符串内。它寻找直到下一个引号的一些非引号字符,然后寻找单个字符或带引号的字符组的序列,直到字符串的结尾。
这取决于您的假设,即报价始终保持平衡。这也不是很有效。

我能够使用Python做到这一点:
>>> import re>>> re.sub(r"x(?=[^']*'([^']|'[^']*')*$)", "P", "axbx'cxdxe'fxgh'ixj'k")"axbx'cPdPe'fxgh'iPj'k"
这是使用非捕获匹配(?=
…)检查字符x是否在带引号的字符串内。它寻找直到下一个引号的一些非引号字符,然后寻找单个字符或带引号的字符组的序列,直到字符串的结尾。
这取决于您的假设,即报价始终保持平衡。这也不是很有效。