我正在尝试将特殊类型的字符串文字与一些时髦的转义规则相匹配。
一般形式如下所示:
"some string"
使用诸如“(。*?)”之类的模式很容易匹配
但是,您可以通过将引号加倍来转义引号,例如:
"hello "" there"
变成hello " there
"hello """" there"
变成hello "" there
这就是我的正则表达式技能让我失望的地方。我怎样才能匹配这样的字符串?
哦,我正在使用 python 3.1。
regex = re.compile(r'"(?:[^"]|"")*"')
这只是找到文字,它不会通过替换双引号来解码它们。
不使用正则表达式,但您已经指定了 Python,所以这是一种获得预期输出的方法:
>>> import csv
>>> strings = ['"some string"', '"hello "" there"', '"hello """" there"']
>>> for s in strings:
print next(csv.reader([s]))
['some string']
['hello " there']
['hello "" there']