1

だから、私はコンパイルしたいこの正規表現を持っています:

(?<!\\)(?:(')|")(?(1)(\\'|[^'\r])+?'|(\\"|[^\r"])+?")

それは正常に動作します。しかし、' と " の記号があるため、それらをエスケープする必要があります。

re.compile('''(?<!\\)(?:(')|")(?(1)(\\'|[^'\r])+?'|(\\"|[^\r"])+?")''')

これにより、「括弧のバランスが取れていません」というエラーが表示されます。私も試しました:

re.compile('(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')

これらすべてのバックスラッシュは、どういうわけかそれを混乱させていますか? バックスラッシュをエスケープするためにバックスラッシュを追加しなくても理解するのは難しいです...

4

1 に答える 1

4

はい、そうです。生の文字列を使用します。

>>> re.compile(r'(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')
<_sre.SRE_Pattern object at 0x242aa60>
于 2013-06-30T23:47:00.857 に答える