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 に答える