【发布时间】:2013-11-21 10:20:03
【问题描述】:
我想转换下面的字符串
"For "The" Win","Way "To" Go"
到
"For ""The"" Win","Way ""To"" Go"
简单的正则表达式是
str2 = re.sub(r'(?<!,|^)"(?=\w)|(?<=\w)"(?!,|$)', '""', str1,flags=re.MULTILINE)
即双引号
- 后跟一个字母,但前面没有逗号或行首
- 前面有一个字母,后面没有逗号或行尾
问题是我使用的是 python,它的正则表达式引擎不允许在后向构造中使用 OR 运算符。我得到了错误
sre_constants.error:look-behind 需要固定宽度的模式
我正在寻找的是一个正则表达式,它将用'""' 替换'The' 和'To' 周围的'"'。
我可以使用以下正则表达式(提供给another question 的答案)
\b\s*"(?!,|[ \t]*$)
但这会占用“The”和“To”之前的空间,我得到以下内容
"For""The"" Win","Way""To"" Go"
是否有一种解决方法,以便我可以将“The”和“To”周围的引号加倍,而不会占用它们前面的空格?
【问题讨论】:
-
对于这样的字符串:
"For "The" mar"vel"ous Win",要不要修改名词内的引号?