3

我正在尝试将特殊类型的字符串文字与一些时髦的转义规则相匹配。

一般形式如下所示:

"some string"

使用诸如“(。*?)”之类的模式很容易匹配

但是,您可以通过将引号加倍来转义引号,例如:

"hello "" there"变成hello " there
"hello """" there"变成hello "" there

这就是我的正则表达式技能让我失望的地方。我怎样才能匹配这样的字符串?

哦,我正在使用 python 3.1。

4

2 回答 2

3
regex = re.compile(r'"(?:[^"]|"")*"')

这只是找到文字,它不会通过替换双引号来解码它们。

于 2013-06-03T18:48:23.600 回答
1

不使用正则表达式,但您已经指定了 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']
于 2013-06-03T18:48:12.103 回答