5

このルールマッチにアポストロフィを追加したい '

rule = re.compile(r'^[^*$<,>?!]*$')

私が試してみました:

rule = re.compile(r'^[^*$<,>?!']*$')

しかし、アポストロフィは行エラーと見なされます。なぜですか?

4

2 に答える 2

9

アポストロフィをエスケープする必要があります。そうしないと、生の文字列の末尾としてカウントされます。

rule = re.compile(r'^[^*$<,>?!\']*$')

"または、 Python で完全に有効な文字列を囲むために使用できます。

rule = re.compile(r"^[^*$<,>?!']*$")
于 2013-07-05T10:33:09.067 に答える
8

'エラーが発生するのは、単一の内部を直接使用できず''、同様に内部で単一を使用"できないためです""。これは、Python を混乱させ、文字列が実際にどこで終了するかがわからないためです。

二重引用符を使用するか、単一引用符を'\':でエスケープできます。

rule = re.compile(r"^[^*$<,>?!']*$")

デモ:

>>> strs = 'can\'t'
>>> print strs
can't
>>> strs = "can't"
>>> print strs
can't
>>> 'can't'  #wrong, SyntaxError: invalid syntax

>>> "can"t"  #wrong, SyntaxError: invalid syntax
于 2013-07-05T10:33:18.680 に答える