除了字符串的第一个和最后一个字符外,什么是用带有转义反斜杠后跟双引号(\“)的字符串中的双引号(”)替换正则表达式。
示例1:嵌入在字符串中的双引号
Input: "This is a "Test""
Expected Output: "This is a \"Test\""
示例2:字符串中间没有双引号
Input: "This is a Test"
Expected Output: "This is a Test"
当我在python中执行re.sub()
操作时,包括第一个和最后一个双引号字符在内的所有内容都将被替换。在上面的示例中,输出字符串变为:\“这是一个Test \”。
答案 0 :(得分:6)
我不了解你,但我会这么做:
'"{}"'.format(s[1:-1].replace('"',r'\"'))
当然,这会产生一大堆假设 - 最强的是第一个和最后一个字符总是双引号......
也许这会好一点:
'{0}{1}{2}'.format(s[0],s[1:-1].replace('"',r'\"'),s[-1])
保留第一个和最后一个字符,并在中间转义所有双引号。
答案 1 :(得分:2)
正如@mgilson指出的那样,你可以将第一个和最后一个字符分开,这样这个正则表达式基本没有意义
>>> print re.sub(r'(?<!^)"(?!$)', '\\"', '"This is a "Test""')
"This is a \"Test\""
>>> print re.sub(r'(?<!^)"(?!$)', '\\"', '"This is a Test"')
"This is a Test"
答案 2 :(得分:1)
不幸的是,我不认为你可以用一个正则表达式做到这一点。但是,你可以伪造它,有三个正则表达式。
>>> x = '"This is "what" it is"'
>>> print x
"This is "what" it is"
>>> x = re.sub(r'"',r'\\"',x)
>>> print x
\"This is \"what\" it is\"
>>> x = re.sub(r'^\\"','"',x)
>>> print x
"This is \"what\" it is\"
>>> x = re.sub(r'\\"$','"',x)
>>> print x
"This is \"what\" it is"
第一个正则表达式将所有引号更改为转义引号。
第二个正则表达式会更改前导引号(如果没有引号,则无效。)
第三个正则表达式更改了尾随引用(如果没有尾随引号,则无效)。