我想转换以下字符串
“为了“胜利””,“走向”之路
到
“为了”“The”“赢”,”Way“”“去”“走”
简单的正则表达式是
str2 = re.sub(r'(?<!,|^)"(?=\w)|(?<=\w)"(?!,|$)', '""', str1,flags=re.MULTILINE)
即,将引号加倍
- 后跟一个字母但前面没有逗号或行首
- 前面有一个字母但后面没有逗号或行尾
问题是我正在使用 python,它的正则表达式引擎不允许在 lookbehind 构造中使用 OR 运算符。我得到错误
sre_constants.error: look-behind requires fixed-width pattern
我正在寻找的是一个正则表达式,它将用 '""'
替换 'The' 和 'To' 周围的 '"'
。
我可以使用以下正则表达式(提供给 another question 的答案)
\b\s*"(?!,|[ \t]*$)
但这会占用“The”和“To”之前的空间,我得到以下内容
"For""The""Win","Way""To""Go"
是否有解决方法,以便我可以将“The”和“To”两边的引号加倍,而不会消耗它们之前的空格?
最佳答案
与其说前面没有逗号或行首,不如说前面有非逗号字符:
r'(?<=[^,])"(?=\w)|(?<=\w)"(?!,|$)'
关于Python Regex - 匹配一个字符而不消耗它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118193/